ó <¿CVc@sÒddlmZddlmZddlmZmZmZedefd„ƒYƒZ ede fd„ƒYƒZ eedefd „ƒYƒƒZ ed e fd „ƒYƒZ ed e fd „ƒYƒZ dS(iÿÿÿÿ(tunicode_literals(traise_unorderable_types(ttotal_orderingtpython_2_unicode_compatiblet unicode_reprtAbstractCCGCategorycBsheZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z RS( u; Interface for categories in combinatory grammars. cCs tƒ‚dS(N(tNotImplementedError(tself((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt is_primitivescCs tƒ‚dS(N(R(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt is_functionscCs tƒ‚dS(N(R(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pytis_varscCs tƒ‚dS(N(R(Rt substitutions((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt substitute scCs tƒ‚dS(N(R(Rtother((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt can_unify&scCs tƒ‚dS(N(R(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt__str__+scCs"|j|jko!|j|jkS(N(t __class__t_comparison_key(RR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt__eq__.scCs ||k S(N((RR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt__ne__2scCs^t|tƒs"td||ƒn|j|jkrD|j|jkS|jj|jjkSdS(Nu<(t isinstanceRRRRt__name__(RR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt__lt__5s cCs9y |jSWn'tk r4t|jƒ|_|jSXdS(N(t_hashtAttributeErrorthashR(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt__hash__=s   ( Rt __module__t__doc__RR R R RRRRRR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR s         tCCGVarcBsneZdZdZed„Zed„ƒZd„Zd„Z d„Z d„Z d„Z d „Z d „ZRS( u Class representing a variable CCG category. Used for conjunctions (and possibly type-raising, if implemented as a unary rule). icCs(|jƒ|_||_|j|_dS(u½Initialize a variable (selects a new identifier) :param prim_only: a boolean that determines whether the variable is restricted to primitives :type prim_only: bool N(tnew_idt_idt _prim_onlyR(Rt prim_only((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt__init__Ns cCs|jd|_|jdS(uBA class method allowing generation of unique variable identifiers.i(t_maxID(tcls((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRXscCstS(N(tFalse(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR^scCstS(N(R%(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR ascCstS(N(tTrue(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR dscCs+x$|D]\}}||kr|SqW|S(ulIf there is a substitution corresponding to this variable, return the substituted category. ((RR tvartcat((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR gs cCs'|jƒs|j r#||fgSdS(uX If the variable can be replaced with other a substitution is returned. N(RR tNone(RR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRps cCs|jS(N(R(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pytidxscCsdt|jƒS(Nu_var(tstrR(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR{s(RRRR#R%R"t classmethodRRR R R RR*R(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyREs      t DirectioncBsžeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„ZRS(u¨ Class representing the direction of a function application. Also contains maintains information as to which combinators may be used with the category. cCs+||_||_|t|ƒf|_dS(N(t_dirt_restrsttupleR(Rtdirt restrictions((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR"†s  cCs |jdkS(Nu/(R.(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt is_forwardŒscCs |jdkS(Nu\(R.(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt is_backwardŽscCs|jS(N(R.(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR1‘scCs|jS(u8A list of restrictions on the combinators. '.' denotes that permuting operations are disallowed ',' denotes that function composition is disallowed '_' denotes that the direction has variable restrictions. (This is redundant in the current implementation of type-raising) (R/(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pytrestrs”scCs |jdkS(Nu_(R/(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt is_variablescCs^|jƒrd|jƒfgS|jƒr>d|jƒfgS|jƒ|jƒkrZgSdS(Nu_(R6R5R)(RR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR£s  cCsG|jƒs|Sx0|D](\}}|dkrt|j|ƒSqW|S(Nu_(R6R-R.(RtsubsR'R5((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR ­s   cCs d|jkS(Nu,(R/(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt can_compose·scCs d|jkS(Nu.(R/(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt can_crossºscCs"|j|jko!|j|jkS(N(RR(RR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR½scCs ||k S(N((RR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRÁscCs^t|tƒs"td||ƒn|j|jkrD|j|jkS|jj|jjkSdS(Nu<(RR-RRRR(RR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRÄs cCs9y |jSWn'tk r4t|jƒ|_|jSXdS(N(RRRR(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRÌs   cCs9d}x|jD]}|d|}qWd|j|fS(Nuu%su%s%s(R/R.(Rtr_strtr((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRÓscCs3|jdkrtd|jƒStd|jƒSdS(Nu/u\(R.R-R/(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyt__neg__Ús(RRRR"R3R4R1R5R6RR R8R9RRRRRR<(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR-~s"            tPrimitiveCategorycBsbeZdZgd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z RS( u« Class representing primitive categories. Takes a string representation of the category, and a list of strings specifying the morphological subcategories. cCs+||_||_|t|ƒf|_dS(N(t_categR/R0R(RtcategR2((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR"ès  cCstS(N(R&(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRíscCstS(N(R%(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR ðscCstS(N(R%(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR óscCs|jS(N(R/(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR5öscCs|jS(N(R>(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR?ùscCs|S(N((RR7((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR ýscCss|jƒsdS|jƒr)||fgS|jƒ|jƒkrox'|jD]}||jƒkrKdSqKWgSdS(N(RR)R R?R/R5(RR trestr((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRs   cCsK|jgkrd|jSddjd„|jDƒƒ}d|j|fS(Nu%su[%s]u,css|]}t|ƒVqdS(N(R(t.0R;((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pys su%s%s(R/R>tjoin(RR2((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRs  ( RRRR"RR R R5R?R RR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR=ás        tFunctionalCategorycBsheZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z RS( uœ Class that represents a function application category. Consists of argument and result categories, together with an application direction. cCs1||_||_||_|||f|_dS(N(t_rest_argR.R(RtrestargR1((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR"s   cCstS(N(R%(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR#scCstS(N(R&(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR &scCstS(N(R%(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR )scCsI|jj|ƒ}|jj|ƒ}|jj|ƒ}t|||jƒS(N(RDR R.RERC(RR7tsub_restsub_dirtsub_arg((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR .scCsµ|jƒr||fgS|jƒr±|jj|jƒƒ}|jj|jƒƒ}|dk r±|dk r±|jj |ƒj|j ƒj |ƒƒ}|dk r®||Sq±ndS(N( R R RDRRFR.R1R)RER RG(RR tsatsdtsb((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR6s   * cCs|jS(N(RE(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRGCscCs|jS(N(RD(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRFFscCs|jS(N(R.(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyR1IscCsd|j|j|jfS(Nu(%s%s%s)(RDR.RE(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRLs( RRRR"RR R R RRGRFR1R(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyRCs        N(t __future__Rtnltk.internalsRt nltk.compatRRRtobjectRRR-R=RC(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/ccg/api.pyts88a4