§
    íóÉj!7  ã                   ó†  — 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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)ÚMAX_PARSE_TREESÚAbstractChartRuleÚChartÚEdgeIÚ_ParseTreeBudget)Ú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       úq/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib/python3.11/site-packages/nltk/ccg/chart.pyÚ__init__zCCGEdge.__init__A   s,   € ØˆŒ
ØˆŒØˆŒ
Ø $ e¨TÐ2ˆÔÐÐó    c                 ó   — | j         S r   ©r   ©r   s    r"   ÚlhszCCGEdge.lhsH   ó
   € ØŒ{Ðr$   c                 ó   — | j         S r   ©r   r'   s    r"   r   zCCGEdge.spanK   ó
   € ØŒzÐr$   c                 ó   — | j         d         S ©Nr   r+   r'   s    r"   ÚstartzCCGEdge.startN   ó   € ØŒz˜!Œ}Ðr$   c                 ó   — | j         d         S ©Né   r+   r'   s    r"   ÚendzCCGEdge.endQ   r0   r$   c                 ó8   — | j         d         | j        d         z
  S )Nr3   r   )r   r   r'   s    r"   ÚlengthzCCGEdge.lengthT   s   € ØŒz˜!Œ}˜tœy¨œ|Ñ+Ð+r$   c                 ó   — dS )N© r8   r'   s    r"   ÚrhszCCGEdge.rhsW   s   € Øˆrr$   c                 ó   — dS r.   r8   r'   s    r"   ÚdotzCCGEdge.dotZ   ó   € Øˆqr$   c                 ó   — dS ©NTr8   r'   s    r"   Úis_completezCCGEdge.is_complete]   ó   € Øˆtr$   c                 ó   — dS ©NFr8   r'   s    r"   Úis_incompletezCCGEdge.is_incomplete`   ó   € Øˆur$   c                 ó   — d S r   r8   r'   s    r"   ÚnextsymzCCGEdge.nextsymc   r@   r$   c                 ó   — | j         S r   r&   r'   s    r"   r    zCCGEdge.categf   r)   r$   c                 ó   — | j         S r   )r   r'   s    r"   r!   zCCGEdge.rulei   r,   r$   N)Ú__name__Ú
__module__Ú__qualname__r#   r(   r   r/   r4   r6   r9   r;   r?   rC   rF   r    r!   r8   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__r   s4   € ØˆŒ	ØˆŒØˆŒ
Ø # U§[¢[¡]¤]°DÐ9ˆÔÐÐr$   c                 ó4   — | j                              ¦   «         S r   ©rP   r    r'   s    r"   r(   zCCGLeafEdge.lhsy   ó   € ØŒ{× Ò Ñ"Ô"Ð"r$   c                 ó$   — | j         | j         dz   fS r2   ©rO   r'   s    r"   r   zCCGLeafEdge.span|   s   € Ø”	˜4œ9 q™=Ð)Ð)r$   c                 ó   — | j         S r   rY   r'   s    r"   r/   zCCGLeafEdge.start   s
   € ØŒyÐr$   c                 ó   — | j         dz   S r2   rY   r'   s    r"   r4   zCCGLeafEdge.end‚   s   € ØŒy˜1‰}Ðr$   c                 ó   — dS r2   r8   r'   s    r"   r6   zCCGLeafEdge.length…   r<   r$   c                 ó   — | j         S r   ©rQ   r'   s    r"   r9   zCCGLeafEdge.rhsˆ   r,   r$   c                 ó   — dS r.   r8   r'   s    r"   r;   zCCGLeafEdge.dot‹   r<   r$   c                 ó   — dS r>   r8   r'   s    r"   r?   zCCGLeafEdge.is_completeŽ   r@   r$   c                 ó   — dS rB   r8   r'   s    r"   rC   zCCGLeafEdge.is_incomplete‘   rD   r$   c                 ó   — d S r   r8   r'   s    r"   rF   zCCGLeafEdge.nextsym”   r@   r$   c                 ó   — | j         S r   )rP   r'   s    r"   rS   zCCGLeafEdge.token—   r)   r$   c                 ó4   — | j                              ¦   «         S r   rV   r'   s    r"   r    zCCGLeafEdge.categš   rW   r$   c                 ó   — | j         S r   r^   r'   s    r"   rT   zCCGLeafEdge.leaf�   r,   r$   N)rI   rJ   rK   Ú__doc__r#   r(   r   r/   r4   r6   r9   r;   r?   rC   rF   rS   r    rT   r8   r$   r"   rM   rM   m   sð   € € € € € ðð ð:ð :ð :ð#ð #ð #ð*ð *ð *ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð#ð #ð #ðð ð ð ð r$   rM   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!   )r4   r/   rl   Ú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ú%srk   r'   s    r"   Ú__str__zBinaryCombinatorRule.__str__¿   ó   € Ø�dÔ&Ñ&Ð&r$   N©rI   rJ   rK   rf   ÚNUMEDGESr#   rz   r~   r8   r$   r"   rh   rh   ¡   sR   € € € € € ðð ð
 €Hð&ð &ð &ð#ð #ð #ð$'ð 'ð 'ð 'ð 'r$   rh   c                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )ÚForwardTypeRaiseRulez1
    Class for applying forward type raising
    ri   c                 ó   — t           | _        d S r   )r   rl   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 ro   ©r4   r/   rl   rq   r    r   r   rr   rs   s          r"   rz   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 r|   rk   r'   s    r"   r~   zForwardTypeRaiseRule.__str__Ú   r   r$   Nr€   r8   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.
    ri   c                 ó   — t           | _        d S r   )r   rl   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 ro   r†   rs   s          r"   rz   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 r|   rk   r'   s    r"   r~   zBackwardTypeRaiseRule.__str__ñ   r   r$   Nr€   r8   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 )Nr8   ri   r3   r   )r   )ÚlistÚCCGChartr�   ÚrangeÚ
num_leavesÚ
categoriesrT   rM   rr   Úselectr‘   rz   Úparsesr/   )r   Útokensrt   ÚlexÚindexrS   ry   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   )rI   rJ   rK   rf   r#   r“   rª   r8   r$   r"   rŽ   rŽ     sP   € € € € € ðð ð
ð ð ð ð
ð ð ð)ð )ð )ð )ð )r$   rŽ   c                   ó   — e Zd Zd„ Zdd„ZdS )r™   c                 ó0   — t          j        | |¦  «         d S r   )r   r#   )r   rŸ   s     r"   r#   zCCGChart.__init__<  s   € ÝŒ�t˜VÑ$Ô$Ð$Ð$Ð$r$   Nc           
      ó„  ‡ ‡‡‡‡— ‰s
J d¦   «         ‚‰€t          t          ¦  «        Š|‰v r‰|         S t          |t          ¦  «        rz‰                     ¦   «           ‰|                     ¦   «         ‰ 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           	      óB   •— g | ]}‰                      |‰‰‰‰¦  «        ‘ŒS r8   )Ú_trees)Ú.0ÚcpÚbudgetÚcompleteÚmemor   Ú
tree_classs     €€€€€r"   ú
<listcomp>z#CCGChart._trees.<locals>.<listcomp>Y  s:   ø€ ð ð ð ØHJ�—’˜B ¨$°
¸FÑCÔCðð ð r$   )r   r   Ú
isinstancerM   ÚspendrS   Ú_tokensr/   Úchild_pointer_listsÚ	itertoolsÚproductr   r4   r(   Úcompute_semanticsÚstrr!   Úappend)r   Úedger´   rµ   r¶   r³   ÚwordrT   ÚtreesÚcplÚchild_choicesÚchildrenr(   s   ` ````       r"   r°   zCCGChart._treesB  sä  øøøøø€ ØÐAÐAÐAÑAÔAÐAð
 ˆ>Ý%¥oÑ6Ô6ˆFà�4ˆ<ˆ<Ø˜”:Ðå�d�KÑ(Ô(ð 	Ø�LŠL‰NŒNˆNØ�:˜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ðð ð ð ð ð ð ð ØNQðñ ô ˆ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$   r   )rI   rJ   rK   r#   r°   r8   r$   r"   r™   r™   ;  s7   € € € € € ð%ð %ð %ð'ð 'ð 'ð 'ð 'ð '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   ri   r3   zUnsupported combinator 'ú')ÚlabelÚ	semanticsÚlenr¸   r!   ÚBackwardCombinatorrl   ÚUndirectedFunctionApplicationÚcompute_function_semanticsÚUndirectedCompositionÚcompute_composition_semanticsÚUndirectedSubstitutionÚcompute_substitution_semanticsÚAssertionErrorÚcompute_type_raised_semantics)rÆ   rÁ   rm   ÚfunctionÚarguments        r"   r¾   r¾   l  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}   ri   ú r   )rR   ÚmaxrË   ÚprintÚrstripÚprintCCGTree)ÚtreeÚleafcatsÚleafstrÚcatstrrT   ÚcatÚstr_catÚnextlenÚlcatlenÚrcatlenÚlleaflenÚrleaflens               r"   ÚprintCCGDerivationré   ‡  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 )	Nri   r}   r   r®   rÙ   ú-z {Ú})r¸   r   rË   rÚ   rÝ   rÉ   ÚtuplerÛ   r    rÊ   r¿   )ÚlwidthrÞ   ÚrwidthÚchildrS   Ú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__)-rf   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   r   r   Únltk.sem.logicÚ	nltk.treer   r   rM   rh   rƒ   r‰   ÚApplicationRuleSetÚCompositionRuleSetÚSubstitutionRuleSetÚTypeRaiseRuleSetrõ   rŽ   r™   r¾   ré   rÝ   r    rø   rI   r8   r$   r"   ú<module>r     s¡  ððð ð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ñ .ô .ð .ðbQð Qð Qð6ð ð ð2!ð !ð !ðN €jðñô €ðD"ð "ð "ð ˆzÒÐØ€D�F„F€F€F€Fð Ðr$   