
`]c           @  s(  d  Z  d d l m Z m Z d d l Z d d l Z d d l Z d d l Z d d l m	 Z	 d d l
 Z
 d d l m Z d d l m Z d d l m Z m Z m Z m Z d d l m Z m Z m Z m Z m Z m Z m Z m Z m Z d d	 l m Z d
 e  f d     YZ! d e f d     YZ" d e f d     YZ# d e  f d     YZ$ e d e$ f d     Y Z% e d e$ f d     Y Z& e d e$ f d     Y Z' d e' f d     YZ( d e' f d     YZ) d e' f d     YZ* d e' f d     YZ+ d  e' f d!     YZ, d" e' f d#     YZ- d$ e' f d%     YZ. d& e' f d'     YZ/ d( e  f d)     YZ0 d* e  f d+     YZ1 d, e2 f d-     YZ3 e4 d. k r$e	 d/  Z5 e5 j6 d0 d1 d2 d3 d4 d5 d6 e7 d7 d8 e5 j6 d9 d: d2 d; d4 d5 d6 e7 d7 d< e5 j6 d= d> d2 d? d4 d5 d6 e7 d7 d@ e5 j6 dA dB d2 dC d4 d5 d6 e7 d7 dD e5 j8   \ Z9 Z: e; e:  dE k re5 j< dF  n  e1 dG e9 j=  Z> e! e>  j? e: dH j@ dI  dJ e9 jA dK e9 jB ZC eC eD k reE eD  n> eC jF   jG   ZC e9 jH reE eC jH   jI    n
 eC jJ   n  d S(L   u  
An interface to Boxer.

This interface relies on the latest version of the development (subversion) version of
C&C and Boxer.

Usage:
  Set the environment variable CANDC to the bin directory of your CandC installation.
  The models directory should be in the CandC root directory.
  For example:
     /path/to/candc/
        bin/
            candc
            boxer
        models/
            boxer/
i(   t   print_functiont   unicode_literalsN(   t   OptionParser(   t   reduce(   t   find_binary(   t   ExpectedMoreTokensExceptiont   LogicalExpressionExceptiont   UnexpectedTokenExceptiont   Variable(	   t   DRSt   DrtApplicationExpressiont   DrtEqualityExpressiont   DrtNegatedExpressiont   DrtOrExpressiont	   DrtParsert   DrtPropositiont	   DrtTokenst   DrtVariableExpression(   t   python_2_unicode_compatiblet   Boxerc           B  s   e  Z d  Z d e d e e d  Z e d  Z d e e d  Z d e e d  Z	 d e e d  Z
 d e e d  Z e d  Z e d  Z e d	  Z g  e d
  Z d   Z d   Z RS(   u   
    This class is an interface to Johan Bos's program Boxer, a wide-coverage
    semantic parser that produces Discourse Representation Structures (DRSs).
    c         C  sG   | d k r t   } n  | |  _ | |  _ | |  _ |  j | |  d S(   u  
        :param boxer_drs_interpreter: A class that converts from the
        ``AbstractBoxerDrs`` object hierarchy to a different object.  The
        default is ``NltkDrtBoxerDrsInterpreter``, which converts to the NLTK
        DRT hierarchy.
        :param elimeq: When set to true, Boxer removes all equalities from the
        DRSs and discourse referents standing in the equality relation are
        unified, but only if this can be done in a meaning-preserving manner.
        :param resolve: When set to true, Boxer will resolve all anaphoric DRSs and perform merge-reduction.
        Resolution follows Van der Sandt's theory of binding and accommodation.
        N(   t   Nonet   NltkDrtBoxerDrsInterpretert   _boxer_drs_interpretert   _resolvet   _elimeqt   set_bin_dir(   t   selft   boxer_drs_interpretert   elimeqt   bin_dirt   verboset   resolve(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   __init__C   s    			c         C  s_   |  j  d | |  |  _ t j j t j j |  j d  d   |  _ |  j  d | |  |  _ d  S(   Nu   candciu	   ../modelsu   boxer(   t   _find_binaryt
   _candc_bint   ost   patht   normpatht   joint   _candc_models_patht
   _boxer_bin(   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   _   s    	"c         C  s^   | d k	 r | g n d } |  j | g g | | |  \ } | sZ t d j |    n  | S(   uI  
        Use Boxer to give a first order representation.

        :param input: str Input sentence to parse
        :param occur_index: bool Should predicates be occurrence indexed?
        :param discourse_id: str An identifier to be inserted to each occurrence-indexed predicate.
        :return: ``drt.DrtExpression``
        u   Unable to interpret: "{0}"N(   R   t   interpret_multi_sentst	   Exceptiont   format(   R   t   inputt   discourse_idt   questionR   t   discourse_idst   d(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt	   interpretf   s
    	!c         C  s[   | d k	 r | g n d } |  j | g | | |  \ } | sW t d j |    n  | S(   uh  
        Use Boxer to give a first order representation.

        :param input: list of str Input sentences to parse as a single discourse
        :param occur_index: bool Should predicates be occurrence indexed?
        :param discourse_id: str An identifier to be inserted to each occurrence-indexed predicate.
        :return: ``drt.DrtExpression``
        u   Unable to interpret: "{0}"N(   R   R)   R*   R+   (   R   R,   R-   R.   R   R/   R0   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   interpret_multiu   s
    	c         C  s,   |  j  g  | D] } | g ^ q | | |  S(   u{  
        Use Boxer to give a first order representation.

        :param inputs: list of str Input sentences to parse as individual discourses
        :param occur_index: bool Should predicates be occurrence indexed?
        :param discourse_ids: list of str Identifiers to be inserted to each occurrence-indexed predicate.
        :return: list of ``drt.DrtExpression``
        (   R)   (   R   t   inputsR/   R.   R   R,   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   interpret_sents   s    c   
      C  s   | d k	 rU t |  t |  k s* t  t t j d   | D  sL t  t } n' t t t	 t
 t |     } t } |  j | | | d | } |  j | d | } |  j | |  } g  | D] }	 | j |	 d  ^ q S(   uc  
        Use Boxer to give a first order representation.

        :param inputs: list of list of str Input discourses to parse
        :param occur_index: bool Should predicates be occurrence indexed?
        :param discourse_ids: list of str Identifiers to be inserted to each occurrence-indexed predicate.
        :return: ``drt.DrtExpression``
        c         s  s   |  ] } | d  k	 Vq d  S(   N(   R   (   t   .0t   id(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pys	   <genexpr>   s    R   N(   R   t   lent   AssertionErrorR   t   operatort   and_t   Truet   listt   mapt   strt   ranget   Falset   _call_candct   _call_boxert   _parse_to_drs_dictt   get(
   R   R3   R/   R.   R   t   use_disc_idt	   candc_outt	   boxer_outt   drs_dictR6   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR)      s    "	!c         C  sl   d t  j j |  j d d g |  d d g } |  j d j t d   t | |  D g    |  j | |  S(   uF  
        Call the ``candc`` binary with the given input.

        :param inputs: list of list of str Input discourses to parse
        :param discourse_ids: list of str Identifiers to be inserted to each occurrence-indexed predicate.
        :param filename: str A filename for the output file
        :return: stdout
        u   --modelsu   boxeru	   questionsu   --candc-printeru   
c         s  s+   |  ]! \ } } d  j  |  g | Vq d S(   u   <META>'{0}'N(   R+   (   R5   R0   R6   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pys	   <genexpr>   s   (   R#   R$   R&   R'   t   _callt   sumt   zipR"   (   R   R3   R/   R.   R   t   args(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyRA      s    
		c         C  s   d } zG t j d d d d d t  \ } } t j | d  } | j |  Wd | rc | j   n  Xd d	 d
 d d d	 d g |  j d d	 d g |  j	 d d d d d | g } |  j
 d |  j | |  } t j |  | S(   u   
        Call the ``boxer`` binary with the given input.

        :param candc_out: str output from C&C parser
        :return: stdout
        t   prefixu   boxer-t   suffixu   .int   textu   wNu   --boxu   falseu   --semanticsu   drsu	   --resolveu   trueu   --elimequ   --formatu   prologu   --instantiateu   --input(   R   t   tempfilet   mkstempR;   R#   t   fdopent   writet   closeR   R   RI   R(   t   remove(   R   RF   R   t   ft   fdt   temp_filenameRL   t   stdout(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyRB      s2    		c         C  s5   t  | d | d d g d d d | | d g d | S(	   Nt   path_to_bint   env_varsu   CANDCt   urlu)   http://svn.ask.it.usyd.edu.au/trac/candc/t   binary_namesu   .exeR   (   R   (   R   t   nameR   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR!      s    	c   	      C  sm  | rN t  d |  t  d |  t  d |  t  d | d d j |   n  | d k r | g | } t j | d t j d t j } nE d j | | d j |   } t j | d t j d t j d	 t } | j   \ } } | r-t  d
 | j	  | rt  d | d  n  | r-t  d | d  q-n  | j	 d k rit
 d j | d j |  | j	 |    n  | S(   u  
        Call the binary with the given input.

        :param input_str: A string whose contents are used as stdin.
        :param binary: The location of the binary to call
        :param args: A list of command-line arguments.
        :return: stdout
        u   Calling:u   Args:u   Input:u   Command:u    RY   t   stderru   echo "{0}" | {1} {2}t   shellu   Return code:u   stdout:
u   
u   stderr:
i    u*   ERROR CALLING: {0} {1}
Returncode: {2}
{3}N(   t   printR&   R   t
   subprocesst   Popent   PIPER+   R;   t   communicatet
   returncodeR*   (	   R   t	   input_strt   binaryRL   R   t   cmdt   pRY   R_   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyRI      s.    	!$!$c         C  sK  | j  d  } i  } d } x)| t |  k  rF| | } | j d  r9| j d  } | d | !} | d d k r | d d k r | d d !} n  | | d | j d	  !}	 | d 7} | | } | j d
 j |	   s t  | d d k r| d  d } n  | j d  s&t d j |    t d j |	   }
 d } d } x t | |
  D] \ } } | d k r}| d 7} n  | d k rX| d 8} | d k r|
 | d } | | | d !d k r| d } n
 | d } PqqXqXW| d k st  | | d !j   } |  j	 | | |  } |  j
 j |  | | <n  | d 7} q W| S(   Nu   
i    u   id(u   ,i   u   'ii   u   )u   sem({0},iu   ').'u   ).u   can't parse line: {0}u	   sem({0},[u   [u   ]u   ','i(   t   splitR7   t
   startswitht   indexR+   R8   t   endswitht	   enumeratet   stript
   _parse_drsR   R1   (   R   RG   RE   t   linesRH   t   it   linet	   comma_idxR-   t   drs_idt   search_startt   brace_countt	   drs_startt   jt   ct	   drs_inputt   parsed(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyRC   '  sJ    
 

$

c         C  s   t  d  | g |  j |  S(   N(   t   BoxerOutputDrsParserR   t   parse(   R   t
   drs_stringR-   RE   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyRq   Q  s    N(   t   __name__t
   __module__t   __doc__R   R@   R;   R    R   R1   R2   R4   R)   RA   RB   R!   RI   RC   Rq   (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   =   s"   '
)	*R~   c           B  s%  e  Z d d   Z d d  Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! RS(    c         C  s;   t  j |   | |  _ d |  _ d d d t f g |  _ d S(   uz   
        This class is used to parse the Prolog DRS output from Boxer into a
        hierarchy of python objects.
        u   'u   \N(   R   R    R-   R   t   sentence_id_offsetR@   t   quote_chars(   R   R-   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    V  s    		c         C  s   t  j |  | |  S(   N(   R   R   (   R   t   datat	   signature(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   `  s    c         C  s   d d d d d d g S(   Nu   (u   )u   ,u   [u   ]u   :(    (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   get_all_symbolsc  s    c         C  s   |  j  |  S(   N(   t
   handle_drs(   R   t   tokt   context(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   handlef  s    c         C  s   | S(   N(    (   R   t
   expressionR   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   attempt_adjunctsi  s    c         C  s=   |  j    } |  j | |  } | d k r9 t |   n  | S(   uS   
        Parse a DRS condition

        :return: list of ``DrtExpression``
        N(   t   tokent   handle_conditionR   R   (   R   t   indicesR   t   accum(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   parse_conditionl  s
    c         C  sd   | d k r |  j    S| d k r; |  j |  j  d  g   S| d k r` |  j |  j  d  g   Sd  S(   Nu   drsu   mergeu   smergeu   alfa(   u   mergeu   smerge(   u   alfa(   t	   parse_drst   _handle_binary_expressiont   _make_merge_expressionR   t   _handle_alfa(   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   x  s    
c         C  s  | d k r |  j    g S| d k r= |  j |  j  g } n5| d k ra |  j |  j  g } n| d k r |  j   g } n | d k r |  j   g } n | d k r |  j   g } n | d k r |  j   g } n | d k r |  j   g } n{ | d	 k r|  j	   } n` | d
 k r0|  j
   g } nB | d k rN|  j   g } n$ | d k rl|  j   g } n g  } t g  |  j |  D]. \ } } g  | D] } | | |  ^ q^ qg   S(   ux   
        Handle a DRS condition

        :param indices: list of int
        :return: list of ``DrtExpression``
        u   notu   oru   impu   equ   propu   predu   namedu   relu   timexu   cardu   whqu   duplex(   t   _handle_notR   t   _make_or_expressiont   _make_imp_expressiont
   _handle_eqt   _handle_propt   _handle_predt   _handle_namedt   _handle_relt   _handle_timext   _handle_cardt   _handle_whqt   _handle_duplexRJ   t   _sent_and_word_indices(   R   R   R   t   condst
   sent_indext   word_indicest   cond(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s:    >c         C  sE   |  j  |  j   d  |  j d   } |  j  |  j   d  t |  S(   Nu   (u   )(   t   assertTokenR   t   process_next_expressionR   t   BoxerNot(   R   t   drs(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c           s    j   j   d   j     j   j   d   j      j   j   d   j     j   j   d  t  j      j   j   d        f d   } | S(   Nu   (u   ,u   )c           s   t   j |  |       S(   N(   t	   BoxerPredR-   (   R   R   (   R^   t   posR   t   senset   variable(    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   _handle_pred_f  s    (   R   R   t   parse_variablet   int(   R   R   (    (   R^   R   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c           s    j   j   d  g     j   j   d   j   j   d   j d     j   j   d   j     j   j   d   j d     j   j   d        f d   S(   Nu   (u   whqu   ,u   )c           s   t   j |  |       S(   N(   t   BoxerWhqR-   (   R   R   (   t	   ans_typest   d1t   d2t   refR   (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   <lambda>  s   (   R   R   R   R   R   (   R   (    (   R   R   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c           s    j   j   d   j     j   j   d   j      j   j   d   j     j   j   d   j     j   j   d        f d   S(   Nu   (u   ,u   )c           s   t   j |  |       S(   N(   t
   BoxerNamedR-   (   R   R   (   R^   R   R   t   typeR   (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   (   R   R   R   (   R   (    (   R^   R   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c           s    j   j   d   j     j   j   d   j     j   j   d   j      j   j   d  t  j      j   j   d        f d   S(   Nu   (u   ,u   )c           s   t   j |  |       S(   N(   t   BoxerRelR-   (   R   R   (   t   relR   R   t   var1t   var2(    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   (   R   R   R   R   (   R   (    (   R   R   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  sa   |  j  |  j   d  |  j   } |  j  |  j   d  |  j |  } |  j  |  j   d  | S(   Nu   (u   ,u   )(   R   R   R   t   _handle_time_expression(   R   t   argt	   new_conds(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c           s    j      j  j    d   d k r@  j    } n"  d k r^  j    } n d  S j  j    d      f d   g g  | D]   f d   ^ q S(   Nu   (u   dateu   timeu   )c           s   t   j |  |    d d  S(   Nu   ni    (   R   R-   (   R   R   (   R   R   R   (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   c           s     S(   N(    (   R   R   (   R   (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     t    (   R   R   t   _handle_datet   _handle_timeR   (   R   R   R   (    (   R   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c   	   	   C  s#  g  } |  j  |  j    \ \ } } |  j |  j   d  |  j   } |  j |  j   d  | j t |  j | | | d j |  d d   |  j |  j   d  |  j  |  j    \ \ } } |  j   } | d k r| j d d	  } | j t |  j | | | d
 j |  d d   n  |  j |  j   d  |  j  |  j    \ \ } } |  j   } | d k r| j t |  j | | | d j |  d d   n  |  j |  j   d  |  j  |  j    \ \ } } |  j   } | d k r| j t |  j | | | d j |  d d   n  | S(   Nu   (u   )u   date_pol_{0}u   ai    u   ,u   XXXXu   :u   _u   date_year_{0}u   XXu   date_month_{0}u   date_day_{0}(	   R   t   _parse_index_listR   R   t   appendR   R-   R+   t   replace(	   R   R   R   R   R   t   polt   yeart   montht   day(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR      sv    
c         C  s   g  } |  j    |  j   } | d k rG | j |  j d | |   n  |  j |  j   d  |  j    |  j   } | d k r | j |  j d | |   n  |  j |  j   d  |  j    |  j   } | d k r | j |  j d | |   n  | S(   Nu   XXu   r_hour_2u   ,u   r_min_2u   r_sec_2(   R   R   R   t
   _make_atomR   (   R   R   R   t   hourt   mint   sec(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   n  s     


c           s     j    j   d    j      j    j   d    j      j    j   d    j      j    j   d       f d   S(   Nu   (u   ,u   )c           s   t    j |  |     S(   N(   t	   BoxerCardR-   (   R   R   (   R   R   t   valueR   (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   (   R   R   R   (   R   (    (   R   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c           sp    j   j   d   j     j   j   d   j d      j   j   d      f d   S(   Nu   (u   ,u   )c           s   t   j |  |     S(   N(   t	   BoxerPropR-   (   R   R   (   R   R   R   (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   (   R   R   R   R   R   (   R   (    (   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s   g  } |  j  |  j   d  xN |  j d  d k rl | j |  j    |  j d  d k r |  j   q q W|  j   |  j  |  j   d  | S(   Nu   [i    u   ]u   ,u   :(   R   R   R   t   parse_index(   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    
c         C  sa  |  j  |  j   d  |  j  |  j   d  t   } xZ |  j d  d k r |  j   } | j |  j    |  j d  d k r8 |  j   q8 q8 W|  j   |  j  |  j   d  |  j  |  j   d  g  } x] |  j d  d k r-|  j   } | j |  j |   |  j d  d k r |  j   q q W|  j   |  j  |  j   d  t t	 |  |  S(   Nu   (u   [i    u   ]u   ,u   )(
   R   R   t   setR   t   addR   t   extendR   t   BoxerDrsR<   (   R   t   refsR   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s(    	

c           ss   |  j  |  j   d  |  j d     |  j  |  j   d  |  j d    |  j  |  j   d      f d   S(   Nu   (u   ,u   )c           s    |  |     S(   N(    (   R   R   (   t   drs1t   drs2t   make_callback(    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   (   R   R   R   R   (   R   R   (    (   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c           s   |  j  |  j   d  |  j   } |  j  |  j   d  |  j d     |  j  |  j   d  |  j d    |  j  |  j   d      f d   S(   Nu   (u   ,u   )c           s    |  |     S(   N(    (   R   R   (   R   R   R   (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   (   R   R   R   R   (   R   R   R   (    (   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c           sm     j    j   d    j      j    j   d    j      j    j   d      f d   S(   Nu   (u   ,u   )c           s   t    j |  |    S(   N(   t   BoxerEqR-   (   R   R   (   R   R   R   (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   (   R   R   R   (   R   (    (   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c           s   j   j   d   j   j   d  g    x  j d  d k r  j   }  j   j   d  | d k r   j  j    q5 | d k r   j d   j   } | d	 k r   j d
  q   j |  q5   j  j    q5 W j    j   j   d   j d     j   j   d   j     j   j   d   j d     j   j   d        f d   S(   Nu   (u   [i    u   ]u   :u   desu   numu   numberu   couu   countu   ,u   )c           s   t   j |  |       S(   N(   R   R-   (   R   R   (   R   R   R   R   R   (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   (   R   R   R   R   R   R   (   R   t   catt   typ(    (   R   R   R   R   R   s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s0    
c         C  s!   t  | j | j | j | j  S(   N(   R   R   R   (   R   R   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR      s    c         C  s   t  |  j | | | |  S(   N(   t   BoxerOrR-   (   R   R   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s   t  | j | j |  S(   N(   R   R   R   (   R   R   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s.   |  j    } t j d |  s* t |   | S(   Nu   ^[exps]\d+$(   R   t   ret   matchR8   (   R   t   var(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   	  s    c         C  s   t  |  j    S(   N(   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s   t  d   | D  } | r g  } xV | D]N } g  | D]( } | | d d k r6 | d d ^ q6 } | j | | f  q) W| Sg  | D] } | d d ^ q } d | f g Sd S(   uD   
        :return: list of (sent_index, word_indices) tuples
        c         s  s)   |  ] } | d  k r | d d Vq d S(   i    i  i   N(    (   R5   Rs   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pys	   <genexpr>  s    i  i   N(   R   R   R   (   R   R   t   sent_indicest   pairsR   Rs   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    5!N("   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   R   R   R   R   R   R   R   R   R   (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR~   U  s>   
						.			!						N						
		
						t   BoxerDrsParserc           B  sG   e  Z d  Z d d  Z d   Z d   Z d   Z d   Z d   Z	 RS(   uD   
    Reparse the str form of subclasses of ``AbstractBoxerDrs``
    c         C  s   t  j |   | |  _ d  S(   N(   R   R    R-   (   R   R-   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    (  s    c         C  s"   t  j t  j t  j t  j t  j g S(   N(   R   t   OPENt   CLOSEt   COMMAt   OPEN_BRACKETt   CLOSE_BRACKET(   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   ,  s
    c         C  s   | S(   N(    (   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   5  s    c         C  s	  yI	| d k r2|  j  t j  |  j d  k	 r7 |  j n	 |  j   } |  j  t j  |  j   } |  j  t j  t t	 t
 |  j     } |  j  t j  t
 |  j    } |  j  t j  |  j   } |  j  t j  |  j   } |  j  t j  t
 |  j    }	 |  j  t j  t | | | | | | |	  S| d k ra|  j  t j  |  j d  k	 rf|  j n	 |  j   } |  j  t j  t
 |  j    } |  j  t j  t	 t
 |  j    } |  j  t j  t
 |  j    } |  j  t j  |  j   } |  j  t j  |  j   }
 |  j  t j  t
 |  j    }	 |  j  t j  t | | | | | |
 |	  S| d k r|  j  t j  |  j d  k	 r|  j n	 |  j   } |  j  t j  |  j   } |  j  t j  t t	 t
 |  j     } |  j  t j  t
 |  j    } |  j  t j  t
 |  j    } |  j  t j  |  j   } |  j  t j  t
 |  j    }	 |  j  t j  t | | | | | | |	  S| d k r|  j  t j  |  j d  k	 r|  j n	 |  j   } |  j  t j  t
 |  j    } |  j  t j  t t	 t
 |  j     } |  j  t j  t
 |  j    } |  j  t j  |  j d   } |  j  t j  t | | | | |  S| d k r|  j  t j  |  j d   } |  j  t j  t |  S| d k r?|  j  t j  |  j d   } |  j  t j  |  j d   } |  j  t j  t | j | j |  S| d k r$|  j  t j  |  j d  k	 rs|  j n	 |  j   } |  j  t j  |  j   } |  j  t j  t	 t
 |  j    } |  j  t j  |  j d   } |  j  t j  |  j d   } |  j  t j  t | | | | |  S| d k r|  j  t j  |  j d  k	 rX|  j n	 |  j   } |  j  t j  |  j   } |  j  t j  t t	 t
 |  j     } |  j  t j  t
 |  j    } |  j  t j  t
 |  j    } |  j  t j  t | | | | |  S| d	 k r|  j  t j  |  j d  k	 rI|  j n	 |  j   } |  j  t j  |  j   } |  j  t j  t	 t
 |  j    } |  j  t j  t
 |  j    } |  j  t j  |  j   } |  j  t j  |  j   }
 |  j  t j  t | | | | | |
  S| d
 k rH	|  j  t j  |  j d  k	 rM|  j n	 |  j   } |  j  t j  |  j   } |  j  t j  t t	 t
 |  j     } |  j  t j  |  j   } |  j  t j  |  j d   } |  j  t j  t
 |  j    } |  j  t j  |  j d   } |  j  t j  t | | | | | | |  SWn+ t k
 rv	} t |  j t |    n Xt s	t t  |    d  S(   Nu   predu   namedu   relu   propu   notu   impu   oru   equ   cardu   whq(!   t   assertNextTokenR   R   R-   R   R   R   t   nullableIntTokenR<   R=   R   t   handle_refsR   R   R   R   R   R   R   R   R   R   R   R   R   R   R*   R   t   _currentIndexR>   R@   R8   t   repr(   R   R   R   t   disc_idt   sent_idt   word_idsR   R^   R   R   R   R   R   R   R   R   R   R   R   R   t   e(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   8  s   
$$$$
$$$$ c         C  s&   |  j    } | d k r" t |  Sd  S(   Nu   None(   R   R   R   (   R   t   t(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s:   y |  j    SWn% t k
 r5 } t | j d   n Xd  S(   Nu   Variable expected.(   R   R   Rm   (   R   t   descriptionR   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   get_next_token_variable  s    N(
   R   R   R   R   R    R   R   R   R   R   (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   #  s   					t   AbstractBoxerDrsc           B  sP   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C  s.   |  j    \ } } } | | | B| | | f S(   uK   
        :return: (set<variables>, set<events>, set<propositions>)
        (   t
   _variables(   R   t	   variablest   eventst   propositions(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  sK   i  } x> t  d |  j    D]' \ } } x | D] } | | | <q/ Wq W| S(   Nu   zu   eu   p(   u   zu   eu   p(   RK   R   (   R   t   vartypesR   t   varst   v(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   variable_types  s
    "c         C  s   t    t    t    f S(   uK   
        :return: (set<variables>, set<events>, set<propositions>)
        (   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s   t    S(   N(   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   atoms  s    c         C  s   |  S(   N(    (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   clean  s    c         C  s   | j  d d  j  d d  S(   Nu   -u   _u   '(   R   (   R   R^   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   _clean_name  s    c         C  s   |  S(   N(    (   R   RV   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   renumber_sentences  s    c         C  s   t  d j |    S(   Nu   {0}(   t   hashR+   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   __hash__  s    (
   R   R   R   R   R   R  R  R  R  R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   							R   c           B  s\   e  Z d d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 e j Z RS(	   c         C  s,   t  j |   | |  _ | |  _ | |  _ d  S(   N(   R   R    R   R   t
   consequent(   R   R   R   R  (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR      s    		c         C  s   t    t    t    f } xD |  j D]9 } x0 t | | j    D] \ } } | j |  q> Wq" W|  j d  k	 r x6 t | |  j j    D] \ } } | j |  q Wn  | S(   N(   R   R   RK   R   t   updateR  R   (   R   R   R   t   sR   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    "%c         C  sQ   t  t j d   |  j D t    } |  j d  k	 rM | j |  j j    n  | S(   Nc         s  s   |  ] } | j    Vq d  S(   N(   R  (   R5   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pys	   <genexpr>"  s    (	   R   R9   t   or_R   R   R  R   R  R  (   R   R  (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  !  s    %c         C  sM   |  j  r |  j  j   n d  } t |  j g  |  j D] } | j   ^ q1 |  S(   N(   R  R  R   R   R   R   (   R   R  R{   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  '  s    c         C  sS   |  j  r |  j  j |  n d  } t |  j g  |  j D] } | j |  ^ q4 |  S(   N(   R  R  R   R   R   R   (   R   RV   R  R{   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  +  s    !c         C  se   d d j  d   |  j D  d j  d   |  j D  f } |  j d  k	 ra d | |  j f } n  | S(   Nu   drs([%s], [%s])u   , c         s  s   |  ] } d  | Vq d S(   u   %sN(    (   R5   t   r(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pys	   <genexpr>3  s    c         s  s   |  ] } d  | Vq d S(   u   %sN(    (   R5   R{   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pys	   <genexpr>4  s    u   imp(%s, %s)(   R&   R   R   R  R   (   R   R	  (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   __repr__1  s     c         C  s}   |  j  | j  k o| |  j | j k o| t |  j  t | j  k o| t t j d   t |  j | j  D  o| |  j | j k S(   Nc         s  s!   |  ] \ } } | | k Vq d  S(   N(    (   R5   t   c1t   c2(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pys	   <genexpr>@  s    (	   t	   __class__R   R7   R   R   R9   R:   RK   R  (   R   t   other(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   __eq__:  s    (c         C  s   |  | k S(   N(    (   R   R  (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   __ne__E  s    N(   R   R   R   R    R   R  R  R  R  R  R  R   R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   	
							R   c           B  sY   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 e
 j Z RS(   c         C  s   t  j |   | |  _ d  S(   N(   R   R    R   (   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    M  s    c         C  s   |  j  j   S(   N(   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   Q  s    c         C  s   |  j  j   S(   N(   R   R  (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  T  s    c         C  s   t  |  j j    S(   N(   R   R   R  (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  W  s    c         C  s   t  |  j j |   S(   N(   R   R   R  (   R   RV   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  Z  s    c         C  s   d |  j  S(   Nu   not(%s)(   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  ]  s    c         C  s"   |  j  | j  k o! |  j | j k S(   N(   R  R   (   R   R  (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  `  s    c         C  s   |  | k S(   N(    (   R   R  (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  c  s    (   R   R   R    R   R  R  R  R  R  R  R   R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   K  s   								t   BoxerIndexedc           B  s>   e  Z d    Z d   Z d   Z d   Z e j Z d   Z RS(   c         C  s,   t  j |   | |  _ | |  _ | |  _ d  S(   N(   R   R    R-   R   R   (   R   R-   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    k  s    		c         C  s   t  |  g  S(   N(   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  q  s    c         C  sk   |  j  | j  k oj |  j | j k oj |  j | j k oj |  j | j k oj t t j d   t |  |  D  S(   Nc         s  s!   |  ] \ } } | | k Vq d  S(   N(    (   R5   R	  t   o(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pys	   <genexpr>z  s    (   R  R-   R   R   R   R9   R:   RK   (   R   R  (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  t  s
    c         C  s   |  | k S(   N(    (   R   R  (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  }  s    c         C  s_   d |  j    |  j |  j d j d   |  j D  f } x |  D] } | d | 7} q? W| d S(   Nu   %s(%s, %s, [%s]u   , c         s  s   |  ] } d  | Vq d S(   u   %sN(    (   R5   t   wi(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pys	   <genexpr>  s    u   , %su   )(   t   _predR-   R   R&   R   (   R   R	  R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    	 (	   R   R   R    R  R  R  R   R  R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  i  s   						R   c           B  sG   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C  s>   t  j |  | | |  | |  _ | |  _ | |  _ | |  _ d  S(   N(   R  R    R   R^   R   R   (   R   R-   R   R   R   R^   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR      s
    			c         C  s   t  |  j g  t    t    f S(   N(   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s.   t  |  j |  j |  j | |  j |  j |  j  S(   N(   R   R-   R   R   R^   R   R   (   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt
   change_var  s    c         C  s:   t  |  j |  j |  j |  j |  j |  j  |  j |  j  S(   N(	   R   R-   R   R   R   R  R^   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s=   | |  j   } t |  j | |  j |  j |  j |  j |  j  S(   N(   R   R   R-   R   R   R^   R   R   (   R   RV   t   new_sent_index(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s"   t  |  j |  j |  j |  j f  S(   N(   t   iterR   R^   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   __iter__  s    c         C  s   d S(   Nu   pred(    (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    (	   R   R   R    R   R  R  R  R  R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   						R   c           B  sG   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C  s>   t  j |  | | |  | |  _ | |  _ | |  _ | |  _ d  S(   N(   R  R    R   R^   R   R   (   R   R-   R   R   R   R^   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR      s
    			c         C  s   t  |  j g  t    t    f S(   N(   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s.   t  |  j |  j |  j | |  j |  j |  j  S(   N(   R   R-   R   R   R^   R   R   (   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s:   t  |  j |  j |  j |  j |  j |  j  |  j |  j  S(   N(	   R   R-   R   R   R   R  R^   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s7   t  |  j | |  j  |  j |  j |  j |  j |  j  S(   N(   R   R-   R   R   R   R^   R   R   (   R   RV   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s"   t  |  j |  j |  j |  j f  S(   N(   R  R   R^   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s   d S(   Nu   named(    (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    (	   R   R   R    R   R  R  R  R  R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   						R   c           B  s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C  s>   t  j |  | | |  | |  _ | |  _ | |  _ | |  _ d  S(   N(   R  R    R   R   R   R   (   R   R-   R   R   R   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR      s
    			c         C  s%   t  |  j |  j g  t    t    f S(   N(   R   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s:   t  |  j |  j |  j |  j |  j |  j |  j  |  j  S(   N(	   R   R-   R   R   R   R   R  R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s7   t  |  j | |  j  |  j |  j |  j |  j |  j  S(   N(   R   R-   R   R   R   R   R   R   (   R   RV   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s"   t  |  j |  j |  j |  j f  S(   N(   R  R   R   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s   d S(   Nu   rel(    (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    (   R   R   R    R   R  R  R  R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   					R   c           B  sP   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C  s,   t  j |  | | |  | |  _ | |  _ d  S(   N(   R  R    R   R   (   R   R-   R   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR      s    	c         C  s=   t  t t j t   t   t |  j g  f |  j j     S(   N(   t   tupleR=   R9   R
  R   R   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   #  s    c         C  s   t  |  j g  S(   N(   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   referenced_labels(  s    c         C  s   |  j  j   S(   N(   R   R  (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  +  s    c         C  s+   t  |  j |  j |  j |  j |  j j    S(   N(   R   R-   R   R   R   R   R  (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  .  s    c         C  s4   t  |  j | |  j  |  j |  j |  j j |   S(   N(   R   R-   R   R   R   R   R  (   R   RV   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  7  s    c         C  s   t  |  j |  j f  S(   N(   R  R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  @  s    c         C  s   d S(   Nu   prop(    (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  C  s    (
   R   R   R    R   R  R  R  R  R  R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   									R   c           B  s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C  s,   t  j |  | | |  | |  _ | |  _ d  S(   N(   R  R    R   R   (   R   R-   R   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    H  s    	c         C  s%   t  |  j |  j g  t    t    f S(   N(   R   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   M  s    c         C  s   t    S(   N(   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  P  s    c         C  s+   t  |  j | |  j  |  j |  j |  j  S(   N(   R   R-   R   R   R   R   (   R   RV   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  S  s    c         C  s   t  |  j |  j f  S(   N(   R  R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  \  s    c         C  s   d S(   Nu   eq(    (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  _  s    (   R   R   R    R   R  R  R  R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   G  s   						R   c           B  s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C  s5   t  j |  | | |  | |  _ | |  _ | |  _ d  S(   N(   R  R    R   R   R   (   R   R-   R   R   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    d  s    		c         C  s   t  |  j g  t    t    f S(   N(   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   j  s    c         C  s1   t  |  j | |  j  |  j |  j |  j |  j  S(   N(   R   R-   R   R   R   R   R   (   R   RV   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  m  s    c         C  s   t  |  j |  j |  j f  S(   N(   R  R   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  w  s    c         C  s   d S(   Nu   card(    (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR  z  s    (   R   R   R    R   R  R  R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   c  s
   			
	R   c           B  sG   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C  s,   t  j |  | | |  | |  _ | |  _ d  S(   N(   R  R    R   R   (   R   R-   R   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR      s    	c         C  s+   t  t t j |  j j   |  j j     S(   N(   R  R=   R9   R
  R   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s   |  j  j   |  j j   BS(   N(   R   R  R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s1   t  |  j |  j |  j |  j j   |  j j    S(   N(   R   R-   R   R   R   R  R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s+   t  |  j | |  j  |  j |  j |  j  S(   N(   R   R-   R   R   R   R   (   R   RV   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s   t  |  j |  j f  S(   N(   R  R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s   d S(   Nu   or(    (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    (	   R   R   R    R   R  R  R  R  R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR   ~  s   								R   c           B  sG   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C  s>   t  j |  | | |  | |  _ | |  _ | |  _ | |  _ d  S(   N(   R  R    R   R   R   R   (   R   R-   R   R   R   R   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR      s
    			c         C  sI   t  t t j t |  j g  t   t   f |  j j   |  j j     S(   N(	   R  R=   R9   R
  R   R   R   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s    c         C  s   |  j  j   |  j j   BS(   N(   R   R  R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s=   t  |  j |  j |  j |  j |  j j   |  j |  j j    S(   N(	   R   R-   R   R   R   R   R  R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s7   t  |  j | |  j  |  j |  j |  j |  j |  j  S(   N(   R   R-   R   R   R   R   R   R   (   R   RV   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s3   t  d d j |  j  d |  j |  j |  j f  S(   Nu   [u   ,u   ](   R  R&   R   R   R   R   (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    c         C  s   d S(   Nu   whq(    (   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s    (	   R   R   R    R   R  R  R  R  R  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   			
				t   PassthroughBoxerDrsInterpreterc           B  s   e  Z d    Z RS(   c         C  s   | S(   N(    (   R   t   ex(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR1     s    (   R   R   R1   (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR    s   R   c           B  s/   e  Z e d   Z d   Z d   Z d   Z RS(   c         C  s   | |  _  d  S(   N(   t   _occur_index(   R   t   occur_index(    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR      s    c         C  s  t  | t  rz t g  | j D] } t |  ^ q t t |  j | j    } | j	 d k	 rv |  j | j	  | _	 n  | St  | t  r t |  j | j   St  | t  r |  j d | j | j f |  } |  j | | j  St  | t  r'|  j d | j | j f |  } |  j | | j  St  | t  rh|  j d | j |  } |  j | | j | j  St  | t  rt t | j  |  j | j   St  | t  rt t t | j   t t | j    St  | t  r|  j d | j | j  f |  } |  j | | j  St  | t!  rKt" |  j | j#  |  j | j$   St  | t%  r|  j | j#  } |  j | j$  } t | j | j | j | j  St& st' d | j( j) | f   d S(   uT   
        :param ex: ``AbstractBoxerDrs``
        :return: ``DrtExpression``
        u   %s_%su   ne_%s_%su   %su
   card_%s_%su   %s: %sN(*   t
   isinstanceR   R	   R   R   R<   R=   R1   R   R  R   R   R   R   R   t   _add_occur_indexingR   R^   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R@   R8   R  R   (   R   R  R  R   t   predR   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR1     sB    =""""%!c         G  sB   t  t |   } x) | D]! } t | t  t |    } q W| S(   N(   R   R   R
   (   R   R#  RL   R   R   (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s
    c         C  sh   |  j  rd | j d  k	 rd | j r5 | d | j 7} n  | d | j 7} | d t | j  d 7} n  | S(   Nu   _%su   _s%su   _w%si    (   R  R   R   R-   t   sortedR   (   R   t   baseR  (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR"    s    	(   R   R   R@   R    R1   R   R"  (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR     s   	)	t   UnparseableInputExceptionc           B  s   e  Z RS(    (   R   R   (    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyR&    s   u   __main__u   usage: %prog TEXT [options]u	   --verboseu   -vt   helpu   display verbose logst   actionu
   store_truet   defaultt   destu   verboseu   --folu   -fu
   output FOLu   folu
   --questionu   -qu   input is a questionu   questionu   --occuru   -ou   occurrence indexu   occur_indexi   u   incorrect number of argumentsR   i    u   \nR.   R   (K   R   t
   __future__R    R   R#   R   R9   Rb   t   optparseR   RP   t	   functoolsR   t   nltk.internalsR   t   nltk.sem.logicR   R   R   R   t   nltk.sem.drtR	   R
   R   R   R   R   R   R   R   t   nltk.compatR   t   objectR   R~   R   R   R   R   R  R   R   R   R   R   R   R   R   R  R   R*   R&  R   t   optst
   add_optionR@   t
   parse_argst   optionsRL   R7   t   errorR   t   interpreterR2   Rk   R.   R   R   R   Ra   t   simplifyt   eliminate_equalityt   folt	   normalizet   pretty_print(    (    (    s-   lib/python2.7/site-packages/nltk/sem/boxer.pyt   <module>   s   "@  %;$43(*%6>"(	