§
    'ê[fC7  ã                   ó~  — d Z ddlZddlT 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mZ ddlT ddlmZ ddlmZmZmZ ddlT ddlmZ  G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z ee¦  «         ee¦  «        gZ ee	¦  «         ee¦  «         ee¦  «        gZ ee
¦  «         ee¦  «        gZ  e¦   «          e¦   «         gZ!eez   e z   e!z   Z" G d„ de¦  «        Z# G d„ de¦  «        Z$d„ Z%d„ Z&d„ Z' ed¦  «        Z(d„ Z)e*dk    r e)¦   «          dS dS )aB  
The lexicon is constructed by calling
``lexicon.fromstring(<lexicon string>)``.

In order to construct a parser, you also need a rule set.
The standard English rules are provided in chart as
``chart.DefaultRuleSet``.

The parser can then be constructed by calling, for example:
``parser = chart.CCGChartParser(<lexicon>, <ruleset>)``

Parsing is then performed by running
``parser.parse(<sentence>.split())``.

While this returns a list of trees, the default representation
of the produced trees is not very enlightening, particularly
given that it uses the same tree class as the CFG parsers.
It is probably better to call:
``chart.printCCGDerivation(<parse tree extracted from list>)``
which should print a nice representation of the derivation.

This entire process is shown far more clearly in the demonstration:
python chart.py
é    N)Ú*)	ÚBackwardApplicationÚ
BackwardBxÚBackwardCompositionÚ
BackwardSxÚ	BackwardTÚForwardApplicationÚForwardCompositionÚForwardSubstitutionÚForwardT)ÚTokenÚ
fromstring)ÚParserI)ÚAbstractChartRuleÚChartÚEdgeI)ÚTreec                   ó\   — 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S )ÚCCGEdgec                 óD   — || _         || _        || _        |||f| _        d S ©N)Ú_spanÚ_categÚ_ruleÚ_comparison_key)ÚselfÚspanÚcategÚrules       úB/var/www/piapp/venv/lib/python3.11/site-packages/nltk/ccg/chart.pyÚ__init__zCCGEdge.__init__;   s,   € ØˆŒ
ØˆŒØˆŒ
Ø $ e¨TÐ2ˆÔÐÐó    c                 ó   — | j         S r   ©r   ©r   s    r    ÚlhszCCGEdge.lhsB   ó
   € ØŒ{Ðr"   c                 ó   — | j         S r   ©r   r%   s    r    r   zCCGEdge.spanE   ó
   € ØŒzÐr"   c                 ó   — | j         d         S ©Nr   r)   r%   s    r    ÚstartzCCGEdge.startH   ó   € ØŒz˜!Œ}Ðr"   c                 ó   — | j         d         S ©Né   r)   r%   s    r    ÚendzCCGEdge.endK   r.   r"   c                 ó8   — | j         d         | j        d         z
  S )Nr1   r   )r   r   r%   s    r    ÚlengthzCCGEdge.lengthN   s   € ØŒz˜!Œ}˜tœy¨œ|Ñ+Ð+r"   c                 ó   — dS )N© r6   r%   s    r    ÚrhszCCGEdge.rhsQ   s   € Øˆrr"   c                 ó   — dS r,   r6   r%   s    r    ÚdotzCCGEdge.dotT   ó   € Øˆqr"   c                 ó   — dS ©NTr6   r%   s    r    Úis_completezCCGEdge.is_completeW   ó   € Øˆtr"   c                 ó   — dS ©NFr6   r%   s    r    Úis_incompletezCCGEdge.is_incompleteZ   ó   € Øˆur"   c                 ó   — d S r   r6   r%   s    r    ÚnextsymzCCGEdge.nextsym]   r>   r"   c                 ó   — | j         S r   r$   r%   s    r    r   zCCGEdge.categ`   r'   r"   c                 ó   — | j         S r   )r   r%   s    r    r   zCCGEdge.rulec   r*   r"   N)Ú__name__Ú
__module__Ú__qualname__r!   r&   r   r-   r2   r4   r7   r9   r=   rA   rD   r   r   r6   r"   r    r   r   :   s×   € € € € € ð3ð 3ð 3ðð ð ðð ð ðð ð ðð ð ð,ð ,ð ,ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð r"   r   c                   óf   — 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S )ÚCCGLeafEdgez<
    Class representing leaf edges in a CCG derivation.
    c                 óh   — || _         || _        || _        ||                     ¦   «         |f| _        d S r   )Ú_posÚ_tokenÚ_leafr   r   )r   ÚposÚtokenÚleafs       r    r!   zCCGLeafEdge.__init__l   s4   € ØˆŒ	ØˆŒØˆŒ
Ø # U§[¢[¡]¤]°DÐ9ˆÔÐÐr"   c                 ó4   — | j                              ¦   «         S r   ©rN   r   r%   s    r    r&   zCCGLeafEdge.lhss   ó   € ØŒ{× Ò Ñ"Ô"Ð"r"   c                 ó$   — | j         | j         dz   fS r0   ©rM   r%   s    r    r   zCCGLeafEdge.spanv   s   € Ø”	˜4œ9 q™=Ð)Ð)r"   c                 ó   — | j         S r   rW   r%   s    r    r-   zCCGLeafEdge.starty   s
   € ØŒyÐr"   c                 ó   — | j         dz   S r0   rW   r%   s    r    r2   zCCGLeafEdge.end|   s   € ØŒy˜1‰}Ðr"   c                 ó   — dS r0   r6   r%   s    r    r4   zCCGLeafEdge.length   r:   r"   c                 ó   — | j         S r   ©rO   r%   s    r    r7   zCCGLeafEdge.rhs‚   r*   r"   c                 ó   — dS r,   r6   r%   s    r    r9   zCCGLeafEdge.dot…   r:   r"   c                 ó   — dS r<   r6   r%   s    r    r=   zCCGLeafEdge.is_completeˆ   r>   r"   c                 ó   — dS r@   r6   r%   s    r    rA   zCCGLeafEdge.is_incomplete‹   rB   r"   c                 ó   — d S r   r6   r%   s    r    rD   zCCGLeafEdge.nextsymŽ   r>   r"   c                 ó   — | j         S r   )rN   r%   s    r    rQ   zCCGLeafEdge.token‘   r'   r"   c                 ó4   — | j                              ¦   «         S r   rT   r%   s    r    r   zCCGLeafEdge.categ”   rU   r"   c                 ó   — | j         S r   r\   r%   s    r    rR   zCCGLeafEdge.leaf—   r*   r"   N)rG   rH   rI   Ú__doc__r!   r&   r   r-   r2   r4   r7   r9   r=   rA   rD   rQ   r   rR   r6   r"   r    rK   rK   g   sð   € € € € € ðð ð:ð :ð :ð#ð #ð #ð*ð *ð *ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð#ð #ð #ðð ð ð ð r"   rK   c                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )ÚBinaryCombinatorRulezw
    Class implementing application of a binary combinator to a chart.
    Takes the directed combinator to apply.
    é   c                 ó   — || _         d S r   ©Ú_combinator)r   Ú
combinators     r    r!   zBinaryCombinatorRule.__init__£   s   € Ø%ˆÔÐÐr"   c              #   ó  K  — |                      ¦   «         |                     ¦   «         k    sd S | j                             |                     ¦   «         |                     ¦   «         ¦  «        r›| j                             |                     ¦   «         |                     ¦   «         ¦  «        D ]]}t          |                     ¦   «         |                      ¦   «         f|| j        ¬¦  «        }|                     |||f¦  «        r|V — Œ\d S d S ©N)r   r   r   )r2   r-   rj   Úcan_combiner   Úcombiner   Úinsert©r   ÚchartÚgrammarÚ	left_edgeÚ
right_edgeÚresÚnew_edges          r    ÚapplyzBinaryCombinatorRule.apply§   s	  è è € à—’‘” :×#3Ò#3Ñ#5Ô#5Ò5Ð5ØˆFð Ô×'Ò'¨	¯ªÑ(9Ô(9¸:×;KÒ;KÑ;MÔ;MÑNÔNð 	#ØÔ'×/Ò/°	·²Ñ0AÔ0AÀ:×CSÒCSÑCUÔCUÑVÔVð #ð #�Ý"Ø#Ÿ/š/Ñ+Ô+¨Z¯^ª^Ñ-=Ô-=Ð>ØØÔ)ðñ ô �ð
 —<’< ¨9°jÐ*AÑBÔBð #Ø"�N�N�Nøð	#ð 	#ð#ð #r"   c                 ó   — d| j         z  S ©Nú%sri   r%   s    r    Ú__str__zBinaryCombinatorRule.__str__¹   ó   € Ø�dÔ&Ñ&Ð&r"   N©rG   rH   rI   rd   ÚNUMEDGESr!   rx   r|   r6   r"   r    rf   rf   ›   sR   € € € € € ðð ð
 €Hð&ð &ð &ð#ð #ð #ð$'ð 'ð 'ð 'ð 'r"   rf   c                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )ÚForwardTypeRaiseRulez1
    Class for applying forward type raising
    rg   c                 ó   — t           | _        d S r   )r   rj   r%   s    r    r!   zForwardTypeRaiseRule.__init__È   s   € Ý#ˆÔÐÐr"   c              #   ón  K  — |                      ¦   «         |                     ¦   «         k    sd S | j                             |                     ¦   «         |                     ¦   «         ¦  «        D ]F}t          |                     ¦   «         || j        ¬¦  «        }|                     ||f¦  «        r|V — ŒGd S rm   ©r2   r-   rj   ro   r   r   r   rp   rq   s          r    rx   zForwardTypeRaiseRule.applyË   s¯   è è € Ø—’‘” :×#3Ò#3Ñ#5Ô#5Ò5Ð5ØˆFàÔ#×+Ò+¨I¯OªOÑ,=Ô,=¸z×?OÒ?OÑ?QÔ?QÑRÔRð 	ð 	ˆCÝ I§N¢NÑ$4Ô$4¸CÀdÔFVÐWÑWÔWˆHØ�|Š|˜H y lÑ3Ô3ð Ø���øð	ð 	r"   c                 ó   — d| j         z  S rz   ri   r%   s    r    r|   zForwardTypeRaiseRule.__str__Ô   r}   r"   Nr~   r6   r"   r    r�   r�   Á   sR   € € € € € ðð ð €Hð$ð $ð $ðð ð ð'ð 'ð 'ð 'ð 'r"   r�   c                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )ÚBackwardTypeRaiseRulez3
    Class for applying backward type raising.
    rg   c                 ó   — t           | _        d S r   )r   rj   r%   s    r    r!   zBackwardTypeRaiseRule.__init__ß   s   € Ý$ˆÔÐÐr"   c              #   ón  K  — |                      ¦   «         |                     ¦   «         k    sd S | j                             |                     ¦   «         |                     ¦   «         ¦  «        D ]F}t          |                     ¦   «         || j        ¬¦  «        }|                     ||f¦  «        r|V — ŒGd S rm   r„   rq   s          r    rx   zBackwardTypeRaiseRule.applyâ   s¯   è è € Ø—’‘” :×#3Ò#3Ñ#5Ô#5Ò5Ð5ØˆFàÔ#×+Ò+¨I¯OªOÑ,=Ô,=¸z×?OÒ?OÑ?QÔ?QÑRÔRð 	ð 	ˆCÝ J§O¢OÑ$5Ô$5¸SÀtÔGWÐXÑXÔXˆHØ�|Š|˜H z mÑ4Ô4ð Ø���øð	ð 	r"   c                 ó   — d| j         z  S rz   ri   r%   s    r    r|   zBackwardTypeRaiseRule.__str__ë   r}   r"   Nr~   r6   r"   r    r‡   r‡   Ø   sR   € € € € € ðð ð €Hð%ð %ð %ðð ð ð'ð 'ð 'ð 'ð 'r"   r‡   c                   ó&   — e Zd ZdZdd„Zd„ Zd„ ZdS )ÚCCGChartParserzV
    Chart parser for CCGs.
    Based largely on the ChartParser class from NLTK.
    r   c                 ó0   — || _         || _        || _        d S r   )Ú_lexiconÚ_rulesÚ_trace)r   ÚlexiconÚrulesÚtraces       r    r!   zCCGChartParser.__init__  s   € ØˆŒØˆŒØˆŒˆˆr"   c                 ó   — | j         S r   )rŽ   r%   s    r    r‘   zCCGChartParser.lexicon  s
   € ØŒ}Ðr"   c                 ón  — t          |¦  «        }t          t          |¦  «        ¦  «        }| j        }t          |                     ¦   «         ¦  «        D ]g}|                     |                     |¦  «        ¦  «        D ]<}t          |||                     |¦  «        ¦  «        }|                     |d¦  «         Œ=Œht          d|                     ¦   «         dz   ¦  «        D ]®}t          d|                     ¦   «         |z
  dz   ¦  «        D ]ƒ}t          d|¦  «        D ]p}	|}
||	z   }||z   }| 	                    |
|f¬¦  «        D ]I}| 	                    ||f¬¦  «        D ].}| j
        D ]$}d}|                     ||||¦  «        D ]}|dz  }ŒŒ%Œ/ŒJŒqŒ„Œ¯|                     |                     ¦   «         ¦  «        S )Nr6   rg   r1   r   )r   )ÚlistÚCCGChartrŽ   ÚrangeÚ
num_leavesÚ
categoriesrR   rK   rp   Úselectr�   rx   Úparsesr-   )r   Útokensrr   ÚlexÚindexrQ   rw   r   r-   ÚpartÚlstartÚmidÚrendÚleftÚrightr   Úedges_added_by_ruleÚnewedges                     r    ÚparsezCCGChartParser.parse  sù  € Ý�f‘”ˆÝ�˜f™œÑ&Ô&ˆØŒmˆõ ˜5×+Ò+Ñ-Ô-Ñ.Ô.ð 	+ð 	+ˆEØŸš¨¯
ª
°5Ñ(9Ô(9Ñ:Ô:ð +ð +�Ý& u¨e°U·Z²ZÀÑ5FÔ5FÑGÔG�Ø—’˜X rÑ*Ô*Ð*Ð*ð+õ
 ˜!˜U×-Ò-Ñ/Ô/°!Ñ3Ñ4Ô4ð 	=ð 	=ˆDÝ˜q %×"2Ò"2Ñ"4Ô"4°tÑ";¸aÑ"?Ñ@Ô@ð =ð =�õ " ! T™NœNð =ð =�DØ"�FØ $™,�CØ  4™<�Dà %§¢°6¸3°- Ñ @Ô @ð =ð =˜Ø%*§\¢\¸¸T°{ \Ñ%CÔ%Cð =ð =˜Eà(,¬ð =ð = Ø67Ð 3Ø/3¯zªz¸%ÀÀdÈEÑ/RÔ/Rð !=ð != GØ$7¸1Ñ$<Ð$7Ð$7ð!=ð=ð=ð=ð=ð=ð" �|Š|˜CŸIšI™KœKÑ(Ô(Ð(r"   N)r   )rG   rH   rI   rd   r!   r‘   r¨   r6   r"   r    rŒ   rŒ     sP   € € € € € ðð ð
ð ð ð ð
ð ð ð)ð )ð )ð )ð )r"   rŒ   c                   ó   — e Zd Zd„ Zd„ ZdS )r—   c                 ó0   — t          j        | |¦  «         d S r   )r   r!   )r   r�   s     r    r!   zCCGChart.__init__6  s   € ÝŒ�t˜VÑ$Ô$Ð$Ð$Ð$r"   c           
      ó  ‡ ‡‡‡— ‰s
J d¦   «         ‚|‰v r‰|         S t          |t          ¦  «        rf ‰|                     ¦   «         ‰ j        |                     ¦   «                  g¦  «        } ‰|                     ¦   «         df|g¦  «        }|g‰|<   |gS g ‰|<   g }‰                      |¦  «        D ]Æ}ˆˆˆ ˆfd„|D ¦   «         }	t          j        |	Ž D ]¤}
t          ‰ j        |                     ¦   «         | 	                    ¦   «         …         | 
                    ¦   «         t          |
|¦  «        ¦  «        t          |                     ¦   «         ¦  «        f}|                      ‰||
¦  «        ¦  «         Œ¥ŒÇ|‰|<   |S )Nz&CCGChart cannot build incomplete treesÚLeafc                 ó@   •— g | ]}‰                      |‰‰‰¦  «        ‘ŒS r6   )Ú_trees)Ú.0ÚcpÚcompleteÚmemor   Ú
tree_classs     €€€€r    ú
<listcomp>z#CCGChart._trees.<locals>.<listcomp>L  s+   ø€ ÐWÐWÐWÈR˜TŸ[š[¨¨X°t¸ZÑHÔHÐWÐWÐWr"   )Ú
isinstancerK   rQ   Ú_tokensr-   Úchild_pointer_listsÚ	itertoolsÚproductr   r2   r&   Úcompute_semanticsÚstrr   Úappend)r   Úedger±   r²   r³   ÚwordrR   ÚtreesÚcplÚchild_choicesÚchildrenr&   s   ` ```       r    r®   zCCGChart._trees<  sš  øøøø€ ØÐAÐAÐAÑAÔAÐAà�4ˆ<ˆ<Ø˜”:Ðå�d�KÑ(Ô(ð 	Ø�:˜dŸjšj™lœl¨T¬\¸$¿*º*¹,¼,Ô-GÐ,HÑIÔIˆDØ�:˜tŸzšz™|œ|¨VÐ4°t°fÑ=Ô=ˆDØ˜ˆD�‰JØ�6ˆMàˆˆT‰
Øˆà×+Ò+¨DÑ1Ô1ð 	8ð 	8ˆCØWÐWÐWÐWÐWÐWÐWÐSVÐWÑWÔWˆMÝ%Ô-¨}Ð=ð 	8ð 	8�åØœ T§Z¢Z¡\¤\°D·H²H±J´JÐ%>Ô?ØŸš™
œ
Ý)¨(°DÑ9Ô9ñô õ
 ˜Ÿ	š	™œÑ$Ô$ð�ð —’˜Z˜Z¨¨XÑ6Ô6Ñ7Ô7Ð7Ð7ð	8ð ˆˆT‰
Øˆr"   N)rG   rH   rI   r!   r®   r6   r"   r    r—   r—   5  s2   € € € € € ð%ð %ð %ðð ð ð ð r"   r—   c                 ó€  — | d                               ¦   «         d                              ¦   «         €d S t          | ¦  «        dk    �r8t          |                     ¦   «         t
          ¦  «        r| d         | d         g} |                     ¦   «         j        }| d                               ¦   «         d                              ¦   «         }| d                               ¦   «         d                              ¦   «         }t          |t          ¦  «        rt          ||¦  «        S t          |t          ¦  «        rt          ||¦  «        S t          |t          ¦  «        rt          ||¦  «        S t          d|z   dz   ¦  «        ‚t          | d                               ¦   «         d                              ¦   «         ¦  «        S )Nr   rg   r1   zUnsupported combinator 'ú')ÚlabelÚ	semanticsÚlenrµ   r   ÚBackwardCombinatorrj   ÚUndirectedFunctionApplicationÚcompute_function_semanticsÚUndirectedCompositionÚcompute_composition_semanticsÚUndirectedSubstitutionÚcompute_substitution_semanticsÚAssertionErrorÚcompute_type_raised_semantics)rÂ   r½   rk   ÚfunctionÚarguments        r    rº   rº   \  s|  € Ø�„{×ÒÑÔ˜1Ô×'Ò'Ñ)Ô)Ð1Øˆtå
ˆ8�}„}˜ÒÑÝ�d—i’i‘k”kÕ#5Ñ6Ô6ð 	2Ø  œ X¨a¤[Ð1ˆHà—Y’Y‘[”[Ô,ˆ
Ø˜A”;×$Ò$Ñ&Ô& qÔ)×3Ò3Ñ5Ô5ˆØ˜A”;×$Ò$Ñ&Ô& qÔ)×3Ò3Ñ5Ô5ˆå�jÕ"?Ñ@Ô@ð 	PÝ-¨h¸ÑAÔAÐAÝ˜
Õ$9Ñ:Ô:ð 	PÝ0°¸8ÑDÔDÐDÝ˜
Õ$:Ñ;Ô;ð 	PÝ1°(¸HÑEÔEÐEå Ð!;¸jÑ!HÈ3Ñ!NÑOÔOÐOå,¨X°a¬[×->Ò->Ñ-@Ô-@ÀÔ-C×-MÒ-MÑ-OÔ-OÑPÔPÐPr"   c                 óF  — |                       ¦   «         }d}d}|D ]³\  }}d|z  }dt          t          |¦  «        t          |¦  «        ¦  «        z   }|t          |¦  «        z
  dz  }||t          |¦  «        z
  dz  z   }	|d|z  |z   d|	z  z   z  }|t          |¦  «        z
  dz  }
|
|t          |¦  «        z
  dz  z   }|d|
z  |z   d|z  z   z  }Œ´t          |                     ¦   «         ¦  «         t          |                     ¦   «         ¦  «         t          d| ¦  «         d S )NÚ r{   rg   Ú r   )rP   ÚmaxrÇ   ÚprintÚrstripÚprintCCGTree)ÚtreeÚleafcatsÚleafstrÚcatstrrR   ÚcatÚstr_catÚnextlenÚlcatlenÚrcatlenÚlleaflenÚrleaflens               r    ÚprintCCGDerivationrå   w  s5  € à�xŠx‰zŒz€HØ€GØ€Fð  ð :ð :‰ˆˆsØ˜‘*ˆØ•c�#˜d™)œ)¥S¨¡\¤\Ñ2Ô2Ñ2ˆØ�S ™\œ\Ñ)¨aÑ/ˆØ˜W¥s¨7¡|¤|Ñ3°qÑ8Ñ8ˆØ�#˜‘- 'Ñ)¨C°'©MÑ9Ñ9ˆØ�c $™iœiÑ'¨AÑ-ˆØ˜w­¨T©¬Ñ2°aÑ7Ñ7ˆØ�3˜‘> DÑ(¨3°©>Ñ9Ñ9ˆˆÝ	ˆ'�.Š.Ñ
Ô
ÑÔÐÝ	ˆ&�-Š-‰/Œ/ÑÔÐõ ��DÑÔÐÐÐr"   c           	      ó   — | }t          |t          ¦  «        sd| z   t          |¦  «        z   S |D ] }t          |t	          ||¦  «        ¦  «        }Œ!t          |                     ¦   «         t          ¦  «        sRt          |d| z   t          d|                     ¦   «         z  ¦  «        z   d| z   t          |d         ¦  «        z   ¦  «        S |                     ¦   «         \  }}|dk    r|S t          | dz  || z
  dz  z   d|z  z   ¦  «         d|                     ¦   «         z  }| 	                    ¦   «         �*|dt          | 	                    ¦   «         ¦  «        z   dz   z  }|| z
  t          |¦  «        z
  dz  | z   }t          |dz  |z   ¦  «         |S )	Nrg   r{   r   r¬   rÕ   Ú-z {ú})rµ   r   rÇ   rÖ   rÙ   rÅ   Útupler×   r   rÆ   r»   )ÚlwidthrÚ   ÚrwidthÚchildrQ   ÚopÚstr_resÚ	respadlens           r    rÙ   rÙ   �  s‘  € Ø€Fõ �d�DÑ!Ô!ð &Ø�6‰z�C ™IœIÑ%Ð%ð ð :ð :ˆÝ�V�\¨&°%Ñ8Ô8Ñ9Ô9ˆˆõ �d—j’j‘l”l¥EÑ*Ô*ð 
ÝØ�A˜‘J¥ T¨D¯JªJ©L¬LÑ%8Ñ!9Ô!9Ñ9¸1¸v¹:ÍÈDÐQRÌGÉÌÑ;Tñ
ô 
ð 	
ð —*’*‘,”,�K€UˆBà	ˆV‚|€|Øˆõ 
ˆ&�3‰,˜& 6™/¨SÑ0Ñ
0°4¸"±9Ñ
<Ñ=Ô=Ð=à�e—k’k‘m”mÑ$€GØ‡‚ÑÔÐ$Ø�4�#˜eŸošoÑ/Ô/Ñ0Ô0Ñ0°3Ñ6Ñ6ˆØ˜&‘¥3 w¡<¤<Ñ/°AÑ5¸Ñ>€IÝ	ˆ)�c‰/˜GÑ
#Ñ$Ô$Ð$Ø€Mr"   ar  
    :- S, NP, N, VP    # Primitive categories, S is the target primitive

    Det :: NP/N         # Family of words
    Pro :: NP
    TV :: VP/NP
    Modal :: (S\NP)/VP # Backslashes need to be escaped

    I => Pro             # Word -> Category mapping
    you => Pro

    the => Det

    # Variables have the special keyword 'var'
    # '.' prevents permutation
    # ',' prevents composition
    and => var\.,var/.,var

    which => (N\N)/(S/NP)

    will => Modal # Categories can be either explicit, or families.
    might => Modal

    cook => TV
    eat => TV

    mushrooms => N
    parsnips => N
    bacon => N
    c                  ó¬   — t          t          t          ¦  «        } |                      d                     ¦   «         ¦  «        D ]}t          |¦  «         Œd S )NzI might cook and eat the bacon)rŒ   rž   ÚDefaultRuleSetr¨   Úsplitrå   )Úparserr¨   s     r    Údemorô   Ù  sT   € Ý�C¥Ñ0Ô0€FØ—’Ð>×DÒDÑFÔFÑGÔGð "ð "ˆÝ˜5Ñ!Ô!Ð!Ð!ð"ð "r"   Ú__main__)+rd   r¸   Únltk.ccg.combinatorr   r   r   r   r   r	   r
   r   r   Únltk.ccg.lexiconr   r   Únltk.ccg.logicÚ
nltk.parser   Únltk.parse.chartr   r   r   Únltk.sem.logicÚ	nltk.treer   r   rK   rf   r�   r‡   ÚApplicationRuleSetÚCompositionRuleSetÚSubstitutionRuleSetÚTypeRaiseRuleSetrñ   rŒ   r—   rº   rå   rÙ   rž   rô   rG   r6   r"   r    ú<module>r     sw  ððð ð2 Ð Ð Ð à !Ð !Ð !Ð !ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð /Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð ð*ð *ð *ð *ð *ˆeñ *ô *ð *ðZ1ð 1ð 1ð 1ð 1�%ñ 1ô 1ð 1ðh'ð 'ð 'ð 'ð 'Ð,ñ 'ô 'ð 'ðL'ð 'ð 'ð 'ð 'Ð,ñ 'ô 'ð 'ð.'ð 'ð 'ð 'ð 'Ð-ñ 'ô 'ð 'ð2 ÐÐ+Ñ,Ô,ØÐÐ,Ñ-Ô-ðÐ ð
 ÐÐ+Ñ,Ô,ØÐÐ,Ñ-Ô-ØÐ˜Ñ$Ô$ðÐ ð ÐÐ,Ñ-Ô-ØÐ˜Ñ$Ô$ðÐ ð )Ð(Ñ*Ô*Ð,AÐ,AÑ,CÔ,CÐDÐ ð Ð+Ñ+Ð.AÑAÐDTÑTð ð
-)ð -)ð -)ð -)ð -)�Wñ -)ô -)ð -)ð`$ð $ð $ð $ð $ˆuñ $ô $ð $ðNQð Qð Qð6ð ð ð2!ð !ð !ðN €jðñô €ðD"ð "ð "ð ˆzÒÐØ€D�F„F€F€F€Fð Ðr"   