
    gH                         	 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 d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ  G d
 d      Z G d d      Zd Zedk(  r e        yy# e$ r Y Rw xY w)    )ButtonFrameIntVarLabelListboxMenu	ScrollbarTk)Font)CanvasFrameShowText)
MaltParser)	DrsDrawerDrtVariableExpression)DrtGlue)Variable)RegexpTagger)in_idlec                       e 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 Zd Zd ZddZd Zd Zd Zd Zd Zy)DrtGlueDemoc                    t               | _        | j                  j                  d       | j                          | j	                  | j                         || _        |D cg c]  }d  c}| _        t        | j                        | _        | j                  j                  d       d| _
        g | _        d | _        d | _        d | _        | j                          | j!                  | j                         | j#                  | j                         | j%                  | j                         | j'                  | j                         | j)                  | j                         | j*                  j-                  d| j.                         y c c}w )NzDRT Glue Demo   z<Configure>)r
   _toptitle_init_bindings_init_fonts	_examples_readingCacher   _show_grammarset_curExample	_readings_drs
_drsWidget_error
_init_glue_init_menubar_init_buttons_init_exampleListbox_init_readingListbox_init_canvas_canvasbind
_configure)selfexamplesexamples      K/var/www/openai/venv/lib/python3.12/site-packages/nltk/sem/drt_glue_demo.py__init__zDrtGlueDemo.__init__   s-   D			( 	 	#!2:;(wd(; $DII.q! 	 	499%499%!!$)),!!$)),$))$ 	-9/ <s   !	Fc                 Z    t        g d      }t        |      }t        |d      | _        y )N))z^(David|Mary|John)$NNP)zT^(walks|sees|eats|chases|believes|gives|sleeps|chases|persuades|tries|seems|leaves)$VB)z!^(go|order|vanish|find|approach)$r7   )z^(a)$ex_quant)z	^(every)$
univ_quant)z.^(sandwich|man|dog|pizza|unicorn|cat|senator)$NN)z^(big|gray|former)$JJ)z^(him|himself)$PRP)taggerF)	depparserremove_duplicates)r   r   r   _glue)r0   r=   r>   s      r3   r'   zDrtGlueDemo._init_glueE   s+    
  f-	yEJ
    c                 |   t        t               d         | _        |j                  d| j                         t	        |      | _        | j
                  j                  | j                  j                  d             t        dd| j
                  j                               | _	        t        d| j
                  j                               | _
        | j
                  j                         d	k  r| j
                  j                         d
z
  }n| j
                  j                         d
z   }t        dd|      | _        y )NfontrC   z*Fontsize	helveticabold)familyweightrE   )rH   rE   r      )r   r   _sysfont
option_addr   _sizer!   cgetget	_boldfont_font_bigfont)r0   rootbigs      r3   r   zDrtGlueDemo._init_fontsY   s    &(6"23/ D\


t}}))&12[djjnnFVW4::>>3CD
::>>a**.."Q&C**.."Q&CKSIrA   c           
         t        |      x| _        }| j                  j                  ddd       t        | j                  | j                  d      | _        | j
                  j                          t        | j                  ddd	d
| j                  dd      | _        | j                  j                  ddd       | j                  D ]!  }| j                  j                  dd|z         # | j                  j                  t        t        | j                        d      d       t        | j                        dkD  rvt        | j                  d      }| j                  j                  |j                         |j                  | j                  j                          |j                  dd       | j                  j#                  d| j$                         y )NbothleftrJ   fillsidepadxExamplesrC   textsinglegroovewhite#909090#004040#c0f0c0
selectmoderelief
background
foregroundrC   selectforegroundselectbackgroundrightr   rZ   rY   expandend  %s   (   heightwidthverticalorientyscrollcommandcommandyrZ   rY   <<ListboxSelect>>)r   _exampleFramepackr   rP   _exampleList_labelr   rQ   _exampleListr   insertconfigminlenr	   r!   yviewr.   _exampleList_select)r0   parent	listframer2   
listscrolls        r3   r*   z DrtGlueDemo._init_exampleListboxj   s   ).v6YV&qA"'T^^*#
 	$$&# &&	
 	G&C~~G$$UVg-=? &  C,?(DB O t~~#"4#5#5jIJ$$JNN$Cd&7&7&=&=>OOcO2 	2D4L4LMrA   c           
         t        |      x| _        }| j                  j                  ddd       t        | j                  | j                  d      | _        | j
                  j                          t        | j                  ddd	d
| j                  dd      | _        | j                  j                  ddd       t        | j                  d      }| j                  j                  |j                         |j                  | j                  j                         |j                  dd       | j                          y )NrV   rW   rJ   rX   Readingsr]   r_   r`   ra   rb   rc   rd   re   rl   r   rm   rv   rw   ry   r{   r}   r~   )r   _readingFramer   r   rP   _readingList_labelr   rQ   _readingListr	   r   r!   r   _populate_readingListbox)r0   r   r   r   s       r3   r+   z DrtGlueDemo._init_readingListbox   s   ).v6YV&qA"'T^^*#
 	$$&# &&	
 	G&C t11*E
  
 ?$"3"3"9"9:W3/%%'rA   c                    | j                   j                  dd       t        t        | j                              D ]$  }| j                   j                  dd|dz   z         & | j                   j                  t        t        | j                        d      d       | j                   j                  d| j                         y )	Nr   ro   rp   r   rq      rs   r   )
r   deleteranger   r#   r   r   r   r.   _readingList_select)r0   is     r3   r   z$DrtGlueDemo._populate_readingListbox   s      E*s4>>*+A$$UVq1u-=? ,  C,?(DA N 	2D4L4LMrA   c                    | j                   j                  d| j                         | j                   j                  d| j                         | j                   j                  d| j                         | j                   j                  d| j                         | j                   j                  d| j                         | j                   j                  d| j                         | j                   j                  d| j                         y )Nz<Control-q>z<Control-x>z<Escape>nz<space>pz<BackSpace>)r   r.   destroynextprevr0   s    r3   r   zDrtGlueDemo._init_bindings   s    		}dll3		}dll3		z4<<0		sDII&		y$)),		sDII&		}dii0rA   c                     t        |      x| _        }|j                  dddd       t        |ddd| j                  	      j                  d
       t        |ddd| j
                  	      j                  d
       y )Nnonebottom   rJ   )rY   rZ   r[   padyPrevz#90c0d0black)r^   rh   ri   r|   rW   )rZ   Next)r   _buttonframer   r   r   r   )r0   r   buttonframes      r3   r)   zDrtGlueDemo._init_buttons   s|    */-7Kf8!!D II	
 $F$
 II	
 $F$
rA   c                     d| _         | j                  j                         \  }}}}|j                  dz
  }d||||fz  | j                  d<   | j                          y )Nr      z%d %d %d %dscrollregion)	_autostep_cframer   rt   r-   _redraw)r0   eventx1y1x2y2s         r3   r/   zDrtGlueDemo._configure   sW    <<446RR\\A'4BB7G'G^$rA   c                     t        |dddd      | _        | j                  j                  dddd	       | j                  j                         x}| _        d | _        g | _        d | _        y )
Nra   
   rJ   sunken)rh   closeenoughborderrg   r   rV   top)rn   rY   rZ   r   )r   r   r   canvasr-   _tree_textwidgets	_textline)r0   r   r   s      r3   r,   zDrtGlueDemo._init_canvas   sk    "
 	e!D $ 3 3 55 
rA   c                    t        |      }t        |d      }|j                  dd| j                  d       |j                  dd|       t        |d      }|j                  d	d| j                  d
       |j                  dd| j
                  d       |j                  dd|       t        |d      }|j                  dd| j                  j                  | j                  d       |j                  dd|       t        |d      }|j                  d| j                  dd| j                         |j                  d| j                  dd| j                         |j                  d| j                  dd| j                         |j                  d| j                  dd| j                         |j                  d| j                  dd| j                         |j                  dd|       t        |d      }|j                  dd| j                         |j                  d d|       |j                  |!       y )"Nr   )tearoffExitr   q)label	underliner|   acceleratorFile)r   r   menur   zn, SpacePreviouszp, BackspaceActionzRemove Duplicatesr)r   r   variabler|   r   OptionsTinyr   )r   r   r   valuer|   Small   Medium   Large   Huge   ViewAbout)r   r   r|   Help)r   )r   add_commandr   add_cascader   r   add_checkbuttonr@   r?   _toggle_remove_duplicatesadd_radiobuttonrM   resizeaboutr   )r0   r   menubarfilemenu
actionmenu
optionmenuviewmenuhelpmenus           r3   r(   zDrtGlueDemo._init_menubar   sM   v,+At|| 	 	
 	&AHE'1-
Atyyj 	 	
 	499. 	 	
 	(ajI'1-
""%ZZ1122 	# 	
 	)qzJ+  ZZKK 	! 	
 	  ZZKK 	! 	
 	  ZZKK 	! 	
 	  ZZKK 	! 	
 	  ZZKK 	! 	
 	&AHE+7aL&AHE7#rA   c                    | j                   }| j                  | j                  j                          | j                  r?t	        | j                   | j                        | _        | j                  j                          | j                  r@t	        | j                   | j                        | _        | j                  j                          y y N)r-   r%   clearr$   	DrsWidgetdrawr&   )r0   r   s     r3   r   zDrtGlueDemo._redraw3  s     ??&OO!!#99'dii@DOOO  ";;'dkkBDOOO  " rA   c                 n    d| _         | j                  y | j                  j                          d | _        y Nr   )r   r   r   r0   es     r3   r   zDrtGlueDemo.destroyF  s-    99			rA   c                 N   | j                   j                         }| j                   j                         }|dkD  r\t        |      dk(  r9t	        |d         }|dk  r| j                          y | j                  |dz
         y | j                  |dz
         y | j                          y Nr   r   )r   curselectionrE   r   int_select_previous_example_readingList_store_selectionr0   r   	selectionreadingListSizeindexs        r3   r   zDrtGlueDemo.prevM  s    %%224	++002 Q9~"IaL) A:11355eai@ 11/A2EF ))+rA   c                     | j                   dkD  r| j                  | j                   dz
         y | j                  t        | j                        dz
         y r   )r"   _exampleList_store_selectionr   r   r   s    r3   r   z$DrtGlueDemo._select_previous_exampled  sG    a--d.>.>.BC --c$...AA.EFrA   c                 N   | j                   j                         }| j                   j                         }|dkD  r\t        |      dk(  r<t	        |d         }||dz
  k\  r| j                          y | j                  |dz          y | j                  d       y | j                          y r   )r   r   rE   r   r   _select_next_exampler   r   s        r3   r   zDrtGlueDemo.nextl  s    %%224	++002 Q9~"IaL) _q01--/55eai@ 11!4 %%'rA   c                     | j                   t        | j                        dz
  k  r| j                  | j                   dz          y | j                  d       y Nr   r   )r"   r   r   r   r   s    r3   r   z DrtGlueDemo._select_next_example  sG    c$..1A55--d.>.>.BC --a0rA   c                     d}d}	 ddl m}  |||      j                          y #  t        | j                  ||       Y y xY w)Nz\NLTK Discourse Representation Theory (DRT) Glue Semantics Demo
Written by Daniel H. GarrettezAbout: NLTK DRT Glue Demor   )Message)messager   )tkinter.messageboxr  showr   r   )r0   r   ABOUTTITLEr  s        r3   r   zDrtGlueDemo.about  sE    . 	 ,	.2E/446	.TYYu-s	   % A c                 F    d| _         | j                  j                          y r   )r   r   print_to_filer   s     r3   
postscriptzDrtGlueDemo.postscript  s    ""$rA   c                 R    t               ry | j                  j                  |i | y)z
        Enter the Tkinter mainloop.  This function must be called if
        this demo is created from a non-interactive program (e.g.
        from a secript); otherwise, the demo will close as soon as
        the script completes.
        N)r   r   mainloop)r0   argskwargss      r3   r  zDrtGlueDemo.mainloop  s%     9		D+F+rA   Nc                    || j                   j                  |       | j                   j                         }| j                  j	                  t        |              | j                  j	                  t        |              | j                  j	                  t        |              | j                  j	                  t        |dz                 | j                          y )N)rE   rJ   )
rM   r!   rO   rQ   	configureabsrP   rK   rR   r   )r0   rE   s     r3   r   zDrtGlueDemo.resize  s    JJNN4 zz~~

CI,/  D	l 3s4y\2s4!8}%56rA   c                 H   | j                   j                   | j                   _        | j                  j                  dd       g | _        | j                          | j                  D cg c]  }d  c}| _        d| _        d | _	        d | _
        | j                          y c c}w )Nr   ro   r   )r@   r?   r   selection_clearr#   r   r   r   r"   r&   r$   r   )r0   exs     r3   r   z%DrtGlueDemo._toggle_remove_duplicates  s    +/::+G+G'G

$))!U3%%'-1^^<^rd^<	 =s   (	Bc                     | j                   j                         }t        |      dk7  ry | j                  t	        |d                y r   )r   r   r   r   r   r0   r   r   s      r3   r   zDrtGlueDemo._exampleList_select  <    %%224	y>Q))#il*;<rA   c           	         || _         | j                  |   }| j                  j                  dd       |r| j                  |   }|r.t        |t              r|| _        d | _        nPg | _        || _        nA	 | j                  j                  |      | _        d | _        | j                  | j                  |<   | j)                          | j                  j+                  |       d | _        | j/                          y y # t        $ r}g | _        t        t        dt        |      z               | _        | j                  | j                  |<   | j                  j                  |       | j                  j!                  |d|z         | j                  j#                  t%        t'        | j                        d      d       Y d }~d }~ww xY w)Nr   ro   zError: z  %s *rq   rr   rs   )r"   r   r   r  r   
isinstancelistr#   r&   r@   parse_to_meaning	Exceptionr   r   strr   r   r   r   r   r   selection_setr$   r   )r0   r   r2   cacher   s        r3   r   z(DrtGlueDemo._exampleList_store_selection  s    ..'))!U3&&u-EeT*%*DN"&DK%'DN"'DK%)ZZ%@%@%IDN"&DK04D&&u- ))+++E2DILLN?  ! 
%'DN"7SQRVAS8T"UDK04D&&u- %%,,U3%%,,UX5GI%%,,"3t~~#6;2 -  
s   5A C9 9	GB9GGc                     | j                   j                         }t        |      dk7  ry | j                  t	        |d                y r   )r   r   r   r   r   r  s      r3   r   zDrtGlueDemo._readingList_select  r  rA   c                    | j                   |   }| j                  j                  dd       |r]| j                  j                  |       |j	                         j                         j                         | _        | j                          y y )Nr   ro   )	r#   r   r  r  simplify	normalizeresolve_anaphorar$   r   )r0   r   readings      r3   r   z(DrtGlueDemo._readingList_store_selection  sm    ..'))!U3++E2((*446GGIDILLN rA   r   )__name__
__module____qualname__r4   r'   r   r*   r+   r   r   r)   r/   r,   r(   r   r   r   r   r   r   r   r	  r  r   r   r   r   r   r    rA   r3   r   r      s    #:RK(J" ND(8N1&"F$X#&,.G(.1.%	,=$L=	rA   r   c                       e Zd Zd Zd Zd Zy)r   c           	          || _         || _        t        |j                  |j	                  ddd      d            |_        d|_        d| _        y )Nr    )r^   rC   rD   r   )r   r   r   r   )r$   r-   r   itemcgetcreate_textrC   _BUFFERbbox)r0   r   drsattribss       r3   r4   zDrsWidget.__init__  sL    	!3!3Aqr!3!BFK
  	rA   c                     t        | j                  | j                        j                         \  }}dd|dz   |dz   f| _        y )N)r   r   r   )r   r$   r-   r   r/  )r0   rl   r   s      r3   r   zDrsWidget.draw  s;    #DIIdllCHHJ519fqj1	rA   c                 T    | j                   j                  | j                  dd       y )Nra   0)rY   ru   )r-   create_rectangler/  r   s    r3   r   zDrsWidget.clear
  s    %%diigS%IrA   N)r%  r&  r'  r4   r   r   r(  rA   r3   r   r     s    !2JrA   r   c                  >    g d} t        |       j                          y )N)z
John walkszDavid sees MaryzDavid eats a sandwichzevery man chases a dogzJohn chases himself)r   r  )r1   s    r3   demor7    s    H, ""$rA   __main__N) tkinterr   r   r   r   r   r   r	   r
   tkinter.fontr   nltk.draw.utilr   r   ImportError
nltk.parser   nltk.sem.drtr   r   nltk.sem.gluer   nltk.sem.logicr   nltk.tagr   	nltk.utilr   r   r   r7  r%  r(  rA   r3   <module>rC     sw   ERRR!4
 " 9 ! # ! ^ ^BJ J$%4 zF q  EDEs   "A/ /A76A7