
    NgH                        	 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 n# e$ r Y nw xY w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             dS dS )    )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dS )DrtGlueDemoc                    t                      | _        | j                            d           |                                  |                     | j                   || _        d |D             | _        t          | j                  | _        | j        	                    d           d| _
        g | _        d | _        d | _        d | _        |                                  |                     | j                   |                     | j                   |                     | j                   |                     | j                   |                     | j                   | j                            d| j                   d S )NzDRT Glue Democ                     g | ]}d S N ).0examples     R/var/www/html/ai-engine/env/lib/python3.11/site-packages/nltk/sem/drt_glue_demo.py
<listcomp>z(DrtGlueDemo.__init__.<locals>.<listcomp>(   s    ;;;wd;;;       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exampless     r   __init__zDrtGlueDemo.__init__   s]   DD		((( 	 	###!;;(;;; $DI..q!!! 	 	49%%%49%%%!!$),,,!!$),,,$)$$$ 	-99999r   c                 t    t          g d          }t          |          }t          |d          | _        d S )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)$r=   )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)r8   rC   rD   s      r   r/   zDrtGlueDemo._init_glueE   sJ      
 
  f---	yEJJJ


r   c                    t          t                      d                   | _        |                    d| j                   t	          |          | _        | j                            | j                            d                     t          dd| j                                                  | _	        t          d| j                                                  | _
        | j                                        d	k     r| j                                        d
z
  }n| j                                        d
z   }t          dd|          | _        d S )NfontrH   z*Fontsize	helveticabold)familyweightrJ   )rM   rJ   r      )r   r   _sysfont
option_addr   _sizer)   cgetget	_boldfont_font_bigfont)r8   rootbigs      r   r%   zDrtGlueDemo._init_fontsY   s   &((6"2333/// D\\

t}))&11222[djnnFVFVWWW4:>>3C3CDDD
:>>a*..""Q&CC*..""Q&CKSIIIr   c           
      x   t          |          x| _        }| j                            ddd           t          | j        | j        d          | _        | j                                         t          | j        ddd	d
| j        dd          | _        | j                            ddd           | j	        D ] }| j        
                    dd|z             !| j                            t          t          | j	                  d          d           t          | j	                  dk    rmt          | j        d          }| j                            |j                   |                    | j        j                   |                    dd           | j                            d| j                   d S )NbothleftrO   fillsidepadxExamplesrH   textsinglegroovewhite#909090#004040#c0f0c0
selectmoderelief
background
foregroundrH   selectforegroundselectbackgroundrightr    r_   r^   expandend  %s   (   heightwidthverticalorientyscrollcommandcommandyr_   r^   <<ListboxSelect>>)r   _exampleFramepackr   rU   _exampleList_labelr   rV   _exampleListr&   insertconfigminlenr	   r)   yviewr6   _exampleList_select)r8   parent	listframer   
listscrolls        r   r2   z DrtGlueDemo._init_exampleListboxj   s   ).v6YV&qAAA"'T^*#
 #
 #
 	$$&&&# &&	
 	
 	
 	G&CCC~ 	@ 	@G$$UVg-=????  C,?,?(D(DB OOO t~##"4#5jIIIJ$$JN$CCCd&7&=>>>OOcO222 	2D4LMMMMMr   c           
      h   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        d          }| j        
                    |j                   |
                    | j        j                   |                    dd           |                                  d S )Nr[   r\   rO   r]   Readingsrb   rd   re   rf   rg   rh   ri   rj   rq   r    rr   r{   r|   r~   r   r   r   )r   _readingFramer   r   rU   _readingList_labelr   rV   _readingListr	   r   r)   r   _populate_readingListbox)r8   r   r   r   s       r   r3   z DrtGlueDemo._init_readingListbox   s?   ).v6YV&qAAA"'T^*#
 #
 #
 	$$&&&# &&	
 	
 	
 	G&CCC t1*EEE
  
 ???$"3"9:::W3///%%'''''r   c                 ~   | j                             dd           t          t          | j                            D ]#}| j                             dd|dz   z             $| j                             t          t          | j                  d          d           | j                             d| j	                   d S )	Nr   rt   ru   r    rv      rx   r   )
r   deleteranger   r+   r   r   r   r6   _readingList_select)r8   is     r   r   z$DrtGlueDemo._populate_readingListbox   s      E***s4>**++ 	@ 	@A$$UVq1u-=????  C,?,?(D(DA NNN 	2D4LMMMMMr   c                    | j                             d| j                   | j                             d| j                   | j                             d| j                   | j                             d| j                   | j                             d| j                   | j                             d| j                   | j                             d| j                   d S )Nz<Control-q>z<Control-x>z<Escape>nz<space>pz<BackSpace>)r"   r6   destroynextprevr8   s    r   r$   zDrtGlueDemo._init_bindings   s    	}dl333	}dl333	z4<000	sDI&&&	y$),,,	sDI&&&	}di00000r   c                    t          |          x| _        }|                    dddd           t          |ddd| j        	                              d
           t          |ddd| j        	                              d
           d S )Nnonebottom   rO   )r^   r_   r`   padyPrevz#90c0d0black)rc   rm   rn   r   r\   )r_   Next)r   _buttonframer   r   r   r   )r8   r   buttonframes      r   r1   zDrtGlueDemo._init_buttons   s    */--7Kf8!!DDD I	
 	
 	
 $F$


 I	
 	
 	
 $F$




r   c                     d| _         | j                                        \  }}}}|j        dz
  }d||||fz  | j        d<   |                                  d S )Nr      z%d %d %d %dscrollregion)	_autostep_cframer   ry   r5   _redraw)r8   eventx1y1x2y2s         r   r7   zDrtGlueDemo._configure   s\    <4466RR\A'4BB7G'G^$r   c                     t          |dddd          | _        | j                            dddd	           | j                                        x}| _        d | _        g | _        d | _        d S )
Nrf   
   rO   sunken)rm   closeenoughborderrl   r    r[   top)rs   r^   r_   r   )r   r   r   canvasr5   _tree_textwidgets	_textline)r8   r   r   s      r   r4   zDrtGlueDemo._init_canvas   s~    "
 
 
 	e!DDD $ 3 3 5 55 
r   c                    t          |          }t          |d          }|                    dd| j        d           |                    dd|           t          |d          }|                    d	d| j        d
           |                    dd| j        d           |                    dd|           t          |d          }|                    dd| j        j        | j	        d           |                    dd|           t          |d          }|
                    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 S )"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_checkbuttonrF   rE   _toggle_remove_duplicatesadd_radiobuttonrR   resizeaboutr   )r8   r   menubarfilemenu
actionmenu
optionmenuviewmenuhelpmenus           r   r0   zDrtGlueDemo._init_menubar   s   v,,+++At| 	 	
 	
 	
 	&AHEEE'1---
Atyj 	 	
 	
 	
 	49. 	 	
 	
 	
 	(ajIII'1---
""%Z12 	# 	
 	
 	
 	)qzJJJ+++  ZK 	! 	
 	
 	
 	  ZK 	! 	
 	
 	
 	  ZK 	! 	
 	
 	
 	  ZK 	! 	
 	
 	
 	  ZK 	! 	
 	
 	
 	&AHEEE+++7aLLL&AHEEE7#####r   c                 T   | j         }| j        | j                                         | j        r8t	          | j         | j                  | _        | j                                         | j        r:t	          | j         | j                  | _        | j                                         d S d S r   )r5   r-   clearr,   	DrsWidgetdrawr.   )r8   r   s     r   r   zDrtGlueDemo._redraw3  s     ?&O!!###9 	#'di@@DOO  """; 	#'dkBBDOO  """""	# 	#r   c                 f    d| _         | j        d S | j                                         d | _        d S Nr   )r   r"   r   r8   es     r   r   zDrtGlueDemo.destroyF  s5    9F				r   c                    | j                                         }| j                                         }|dk    rxt          |          dk    rKt	          |d                   }|dk    r|                                  d S |                     |dz
             d S |                     |dz
             d S |                                  d S Nr   r    )r   curselectionrJ   r   int_select_previous_example_readingList_store_selectionr8   r   	selectionreadingListSizeindexs        r   r   zDrtGlueDemo.prevM  s    %2244	+0022 Q9~~""IaL)) A::113333355eai@@@@@ 11/A2EFFFFF ))+++++r   c                     | j         dk    r|                     | j         dz
             d S |                     t          | j                  dz
             d S r   )r*   _exampleList_store_selectionr   r&   r   s    r   r   z$DrtGlueDemo._select_previous_exampled  s]    a--d.>.BCCCCC --c$..A.AA.EFFFFFr   c                    | j                                         }| j                                         }|dk    rxt          |          dk    rNt	          |d                   }||dz
  k    r|                                  d S |                     |dz              d S |                     d           d S |                                  d S r   )r   r   rJ   r   r   _select_next_exampler   r   s        r   r   zDrtGlueDemo.nextl  s    %2244	+0022 Q9~~""IaL)) _q011--/////55eai@@@@@ 11!44444 %%'''''r   c                     | j         t          | j                  dz
  k     r|                     | j         dz              d S |                     d           d S Nr    r   )r*   r   r&   r   r   s    r   r  z DrtGlueDemo._select_next_example  s]    c$.11A555--d.>.BCCCCC --a00000r   c                     d}d}	 ddl m}  |||                                           d S #  t          | j        ||           Y d S 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"   )r8   r   ABOUTTITLEr  s        r   r   zDrtGlueDemo.about  sw    . 	 ,	.222222GE///4466666	.TYu------s	   %- Ac                 F    d| _         | j                                         d S r   )r   r   print_to_filer   s     r   
postscriptzDrtGlueDemo.postscript  s#    ""$$$$$r   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)r8   argskwargss      r   r  zDrtGlueDemo.mainloop  s5     99 	F	D+F+++++r   Nc                    || j                             |           | j                                         }| j                            t          |                      | j                            t          |                      | j                            t          |                      | j                            t          |dz                         | 	                                 d S )N)rJ   rO   )
rR   r)   rT   rV   	configureabsrU   rP   rW   r   )r8   rJ   s     r   r   zDrtGlueDemo.resize  s    JNN4   z~~
CII,///  D		l 333s4yy\222s4!8}}%5666r   c                    | j         j         | j         _        | j                            dd           g | _        |                                  d | j        D             | _        d| _        d | _	        d | _
        |                                  d S )Nr   rt   c                     g | ]}d S r   r   )r   exs     r   r   z9DrtGlueDemo._toggle_remove_duplicates.<locals>.<listcomp>  s    <<<rd<<<r   r!   )rF   rE   r   selection_clearr+   r   r&   r'   r*   r.   r,   r   r   s    r   r   z%DrtGlueDemo._toggle_remove_duplicates  s    +/:+G'G
$))!U333%%'''<<T^<<<	r   c                     | j                                         }t          |          dk    rd S |                     t	          |d                              d S r  )r   r   r   r   r   r8   r   r   s      r   r   zDrtGlueDemo._exampleList_select  R    %2244	y>>QF))#il*;*;<<<<<r   c           	         || _         | j        |         }| j                            dd           |r| j        |         }|r5t          |t                    r|| _        d | _        ng | _        || _        n		 | j	        
                    |          | _        d | _        | j        | j        |<   n# t          $ r}g | _        t          t          dt          |          z                       | _        | j        | j        |<   | j                            |           | j                            |d|z             | j                            t%          t'          | j                  d          d           Y d }~nd }~ww xY w|                                  | j                            |           d | _        |                                  d S d S )Nr   rt   zError: z  %s *rv   rw   rx   )r*   r&   r   r  r'   
isinstancelistr+   r.   rF   parse_to_meaning	Exceptionr   r   strr   r   r   r   r   r   selection_setr,   r   )r8   r   r   cacher   s        r   r   z(DrtGlueDemo._exampleList_store_selection  s    .'))!U333 	&u-E eT** (%*DN"&DKK%'DN"'DKK%)Z%@%@%I%IDN"&DK04D&u--  
 
 
%'DN"7SQRVVAS8T8T"U"UDK04D&u- %,,U333%,,UX5GIII%,,"3t~#6#6;;2 -        
 ))+++++E222DILLNNNNN?	 	s   85B. .
E=8B;E88E=c                     | j                                         }t          |          dk    rd S |                     t	          |d                              d S r  )r   r   r   r   r   r  s      r   r   zDrtGlueDemo._readingList_select  r  r   c                 4   | j         |         }| j                            dd           |rm| j                            |           |                                                                                                | _        |                                  d S d S )Nr   rt   )	r+   r   r  r"  simplify	normalizeresolve_anaphorar,   r   )r8   r   readings      r   r   z(DrtGlueDemo._readingList_store_selection  s    .'))!U333 	++E222((**4466GGIIDILLNNNNN	 	r   r   )__name__
__module____qualname__r:   r/   r%   r2   r3   r   r$   r1   r7   r4   r0   r   r   r   r   r   r  r   r  r  r   r   r   r   r   r   r   r   r   r   r      s       #: #: #:RK K K(J J J" N  N  ND( ( (8N N N1 1 1  &    "F$ F$ F$X# # #&  , , ,.G G G( ( (.1 1 1. . .% % %	, 	, 	,     = = =$ $ $L= = =	 	 	 	 	r   r   c                        e Zd Zd Zd Zd ZdS )r   c           	          || _         || _        t          |                    |                    ddd          d                    |_        d|_        d| _        d S )Nr    )rc   rH   rI   r   )r   r   r   r   )r,   r5   r   itemcgetcreate_textrH   _BUFFERbbox)r8   r   drsattribss       r   r:   zDrsWidget.__init__  s`    	!3!3Aqr!3!B!BFKK
 
 
  			r   c                     t          | j        | j                                                  \  }}dd|dz   |dz   f| _        d S )N)r   r   r    )r   r,   r5   r   r3  )r8   rq   r   s      r   r   zDrsWidget.draw  sD    #DIdlCCCHHJJ519fqj1			r   c                 J    | j                             | j        dd           d S )Nrf   0)r^   rz   )r5   create_rectangler3  r   s    r   r   zDrsWidget.clear
  s'    %%digS%IIIIIr   N)r*  r+  r,  r:   r   r   r   r   r   r   r     sF        ! ! !2 2 2J J J J Jr   r   c                  P    g d} t          |                                            d S )N)z
John walkszDavid sees MaryzDavid eats a sandwichzevery man chases a dogzJohn chases himself)r   r  )r9   s    r   demor;    s5      H, ""$$$$$r   __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   r;  r*  r   r   r   <module>rG     s  ERRRRRRRRRRRRRRRRRRRR!!!!!!444444444 E E EDDE " ! ! ! ! ! 9 9 9 9 9 9 9 9 ! ! ! ! ! ! # # # # # # ! ! ! ! ! !      ^ ^ ^ ^ ^ ^ ^ ^BJ J J J J J J J$% % %4 zDFFFFF s   "% --