§
    ž˜ºha5  ã                   ó~  — 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       úV/var/www/html/services/rag-service/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ð ð :ð :‰	ˆˆcØ˜‘*ˆØ•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"   