Ë
    çÍ:j6E  ã                   ón  — d Z ddlmZ ddlmZmZmZmZ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mZmZmZmZmZmZ  G d„ de«      Z G d„ dee«      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  G d„ de«      Z! G d„ de«      Z" G d„ de«      Z# G d„ de«      Z$ e«        e«        e«        e«        e«       gZ% e«        e«        e«        e«       gZ& e«        e
«        e«        e«       gZ' e«        e
«        e«        e«       gZ( e«        e«        e «       g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. G d%„ d&e*«      Z/ e«        e«        e"«        e#«        e$«       gZ0 e«        e«        e«        e!«       gZ1 e«        e«        e«        e!«       gZ2 e«        e«        e«        e!«       gZ3 G d'„ d(e*e«      Z4 G d)„ d*e4«      Z5 G d+„ d,e4«      Z6 G d-„ d.e4«      Z7 G d/„ d0e4«      Z8	 	 	 	 	 	 d4d1„Z9e:d2k(  r e9«        y3y3)5aÕ  
Data classes and parser implementations for *incremental* chart
parsers, which use dynamic programming to efficiently parse a text.
A "chart parser" derives parse trees for a text by iteratively adding
"edges" to a "chart".  Each "edge" represents a hypothesis about the tree
structure for a subsequence of the text.  The "chart" is a
"blackboard" for composing and combining these hypotheses.

A parser is "incremental", if it guarantees that for all i, j where i < j,
all edges ending at i are built before any edges ending at j.
This is appealing for, say, speech recognizer hypothesis filtering.

The main parser class is ``EarleyChartParser``, which is a top-down
algorithm, originally formulated by Jay Earley (1970).
é    )Úperf_counter)ÚBottomUpPredictCombineRuleÚBottomUpPredictRuleÚCachedTopDownPredictRuleÚChartÚChartParserÚEdgeIÚEmptyPredictRuleÚ"FilteredBottomUpPredictCombineRuleÚ!FilteredSingleEdgeFundamentalRuleÚLeafEdgeÚLeafInitRuleÚSingleEdgeFundamentalRuleÚTopDownInitRule)Ú!FeatureBottomUpPredictCombineRuleÚFeatureBottomUpPredictRuleÚFeatureChartÚFeatureChartParserÚFeatureEmptyPredictRuleÚ FeatureSingleEdgeFundamentalRuleÚFeatureTopDownInitRuleÚFeatureTopDownPredictRulec                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚIncrementalChartc                 ój   — t        d„ | j                  «       D «       «      | _        i | _        i | _        y )Nc              3   ó    K  — | ]  }g –— Œ y ­w©N© ©Ú.0Úxs     úk/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/nltk/parse/earleychart.pyú	<genexpr>z.IncrementalChart.initialize.<locals>.<genexpr>@   s   è ø€ Ò> q¤Ñ>ùó   ‚)ÚtupleÚ
_positionsÚ
_edgelistsÚ_edge_to_cplsÚ_indexes©Úselfs    r"   Ú
initializezIncrementalChart.initialize>   s.   € äÑ>¨D¯O©OÓ,=Ô>Ó>ˆŒð  ˆÔð ˆ�ó    c                 ó4   — t        | j                  «       «      S r   )ÚlistÚ	iteredgesr*   s    r"   ÚedgeszIncrementalChart.edgesI   s   € Ü�D—N‘NÓ$Ó%Ð%r-   c                 ó(   — d„ | j                   D «       S )Nc              3   ó.   K  — | ]  }|D ]  }|–— Œ Œ y ­wr   r   )r    ÚedgelistÚedges      r"   r#   z-IncrementalChart.iteredges.<locals>.<genexpr>M   s   è ø€ ÒJ˜ÀÒJ¸”ÐJ�ÑJùs   ‚)r'   r*   s    r"   r0   zIncrementalChart.iteredgesL   s   € ÙJ T§_¡_ÔJÐJr-   c                 óF  ‡— | j                   |   }‰i k(  rt        |«      S t        ‰j                  «       «      }t	        |«      }|| j
                  vr| j                  |«       t	        ˆfd„|D «       «      }t        | j
                  |   |   j                  |g «      «      S )Nc              3   ó(   •K  — | ]	  }‰|   –— Œ y ­wr   r   )r    ÚkeyÚrestrictionss     €r"   r#   z*IncrementalChart.select.<locals>.<genexpr>^   s   øè ø€ Ò=¨3�\ #Õ&Ñ=ùs   ƒ©r'   ÚiterÚsortedÚkeysr%   r)   Ú
_add_indexÚget©r+   Úendr9   r4   Ú
restr_keysÚvalss     `   r"   ÚselectzIncrementalChart.selectO   s”   ø€ Ø—?‘? 3Ñ'ˆð ˜2ÒÜ˜“>Ð!ô ˜L×-Ñ-Ó/Ó0ˆ
Ü˜:Ó&ˆ
ð ˜TŸ]™]Ñ*Ø�O‰O˜JÔ'äÓ=°*Ô=Ó=ˆÜ�D—M‘M *Ñ-¨cÑ2×6Ñ6°t¸RÓ@ÓAÐAr-   c                 ój  ‡— |D ]   }t        t        |«      rŒt        d|z  «      ‚ t        d„ | j	                  «       D «       «      x}| j
                  |<   t        | j                  «      D ]F  \  }}||   }|D ]7  Št        ˆfd„|D «       «      }|j                  |g «      j                  ‰«       Œ9 ŒH y )NúBad restriction: %sc              3   ó    K  — | ]  }i –— Œ y ­wr   r   r   s     r"   r#   z.IncrementalChart._add_index.<locals>.<genexpr>h   ó   è ø€ Ò1P¸´"Ñ1Pùr$   c              3   ó@   •K  — | ]  } t        ‰|«      «       –— Œ y ­wr   ©Úgetattr©r    r8   r5   s     €r"   r#   z.IncrementalChart._add_index.<locals>.<genexpr>n   s   øè ø€ ÒH°cÐ/œW T¨3Ó/×1ÑHùó   ƒ©
Úhasattrr	   Ú
ValueErrorr%   r&   r)   Ú	enumerater'   Ú
setdefaultÚappend©	r+   rB   r8   ÚindexrA   r4   Ú
this_indexrC   r5   s	           @r"   r>   zIncrementalChart._add_indexa   sµ   ø€ àò 	>ˆCÜœ5 #Õ&Ü Ð!6¸Ñ!<Ó=Ð=ð	>ô
 -2Ñ1P¸d¿o¹oÓ>OÔ1PÓ,PÐPˆ�—‘˜jÑ)ô ' t§¡Ó7ò 	=‰MˆC�Ø˜s™ˆJØ ò =�ÜÓH¸ZÔHÓH�Ø×%Ñ% d¨BÓ/×6Ñ6°tÕ<ñ=ñ	=r-   c                 óÚ   ‡— ‰j                  «       }| j                  j                  «       D ]=  \  }}t        ˆfd„|D «       «      }||   j	                  |g «      j                  ‰«       Œ? y )Nc              3   ó@   •K  — | ]  } t        ‰|«      «       –— Œ y ­wr   rJ   rL   s     €r"   r#   z:IncrementalChart._register_with_indexes.<locals>.<genexpr>t   s   øè ø€ ÒD°#Ð+œ  sÓ+×-ÑDùrM   ©rA   r)   Úitemsr%   rR   rS   ©r+   r5   rA   rB   rU   rC   s    `    r"   Ú_register_with_indexesz'IncrementalChart._register_with_indexesq   s^   ø€ Ø�h‰h‹jˆØ!%§¡×!4Ñ!4Ó!6ò 	9ÑˆJ˜ÜÓD¸ÔDÓDˆDØ�#‰J×!Ñ! $¨Ó+×2Ñ2°4Õ8ñ	9r-   c                 ó\   — | j                   |j                  «          j                  |«       y r   )r'   rA   rS   )r+   r5   s     r"   Ú_append_edgezIncrementalChart._append_edgew   s   € Ø�‰˜Ÿ™›
Ñ#×*Ñ*¨4Õ0r-   c                 ó:   — t        | j                  «       dz   «      S )Né   )ÚrangeÚ
num_leavesr*   s    r"   r&   zIncrementalChart._positionsz   s   € Ü�T—_‘_Ó&¨Ñ*Ó+Ð+r-   N)Ú__name__Ú
__module__Ú__qualname__r,   r1   r0   rD   r>   r\   r^   r&   r   r-   r"   r   r   =   s,   „ ò	ò&òKòBò$=ò 9ò1ó,r-   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚFeatureIncrementalChartc                 óJ  ‡ ‡— ‰ j                   |   }‰i k(  rt        |«      S t        ‰j                  «       «      }t	        |«      }|‰ j
                  vr‰ j                  |«       t	        ˆˆ fd„|D «       «      }t        ‰ j
                  |   |   j                  |g «      «      S )Nc              3   óF   •K  — | ]  }‰j                  ‰|   «      –— Œ y ­wr   )Ú_get_type_if_possible)r    r8   r9   r+   s     €€r"   r#   z1FeatureIncrementalChart.select.<locals>.<genexpr>Ž   s&   øè ø€ ò 
Ø>AˆD×&Ñ& |°CÑ'8×9ñ
ùs   ƒ!r:   r@   s   ` `   r"   rD   zFeatureIncrementalChart.select   s�   ù€ Ø—?‘? 3Ñ'ˆð ˜2ÒÜ˜“>Ð!ô ˜L×-Ñ-Ó/Ó0ˆ
Ü˜:Ó&ˆ
ð ˜TŸ]™]Ñ*Ø�O‰O˜JÔ'äô 
ØEOô
ó 
ˆô �D—M‘M *Ñ-¨cÑ2×6Ñ6°t¸RÓ@ÓAÐAr-   c                 ón  ‡ ‡— |D ]   }t        t        |«      rŒt        d|z  «      ‚ t        d„ ‰ j	                  «       D «       «      x}‰ j
                  |<   t        ‰ j                  «      D ]G  \  }}||   }|D ]8  Št        ˆˆ fd„|D «       «      }|j                  |g «      j                  ‰«       Œ: ŒI y )NrF   c              3   ó    K  — | ]  }i –— Œ y ­wr   r   r   s     r"   r#   z5FeatureIncrementalChart._add_index.<locals>.<genexpr>š   rH   r$   c              3   ó^   •K  — | ]$  }‰j                   t        ‰|«      «       «      –— Œ& y ­wr   ©rj   rK   ©r    r8   r5   r+   s     €€r"   r#   z5FeatureIncrementalChart._add_index.<locals>.<genexpr>    s1   øè ø€ ò àð ×.Ñ.Ð/A¬w°t¸SÓ/AÓ/C×Dñùó   ƒ*-rN   rT   s	   `       @r"   r>   z"FeatureIncrementalChart._add_index“   s¾   ù€ àò 	>ˆCÜœ5 #Õ&Ü Ð!6¸Ñ!<Ó=Ð=ð	>ô
 -2Ñ1P¸d¿o¹oÓ>OÔ1PÓ,PÐPˆ�—‘˜jÑ)ô ' t§¡Ó7ò 	=‰MˆC�Ø˜s™ˆJØ ò =�Üô à)ôó �ð ×%Ñ% d¨BÓ/×6Ñ6°tÕ<ñ=ñ	=r-   c                 óÞ   ‡ ‡— ‰j                  «       }‰ j                  j                  «       D ]>  \  }}t        ˆˆ fd„|D «       «      }||   j	                  |g «      j                  ‰«       Œ@ y )Nc              3   ó^   •K  — | ]$  }‰j                   t        ‰|«      «       «      –— Œ& y ­wr   rn   ro   s     €€r"   r#   zAFeatureIncrementalChart._register_with_indexes.<locals>.<genexpr>©   s.   øè ø€ ò ØEH�×*Ñ*Ð+=¬7°4¸Ó+=Ó+?×@ñùrp   rY   r[   s   ``    r"   r\   z.FeatureIncrementalChart._register_with_indexes¦   sg   ù€ Ø�h‰h‹jˆØ!%§¡×!4Ñ!4Ó!6ò 	9ÑˆJ˜Üô ØLVôó ˆDð �#‰J×!Ñ! $¨Ó+×2Ñ2°4Õ8ñ		9r-   N)rc   rd   re   rD   r>   r\   r   r-   r"   rg   rg   ~   s   „ òBò(=ó&9r-   rg   c                   ó   — e Zd Zd„ Zy)ÚCompleteFundamentalRulec              #   óê   K  — |j                  «       }|j                  ||d|j                  «       ¬«      D ]9  }|j                  |j                  «       «      }|j	                  |||«      sŒ6|–— Œ; y ­w©NT)ÚstartrA   Úis_completeÚlhs)rA   rD   ÚnextsymÚmove_dot_forwardÚinsert_with_backpointer)r+   ÚchartÚgrammarÚ	left_edgerA   Ú
right_edgeÚnew_edges          r"   Ú_apply_incompletez)CompleteFundamentalRule._apply_incompleteµ   sr   è ø€ Ø�m‰m‹oˆð  Ÿ,™,Ø˜3¨D°i×6GÑ6GÓ6Ið 'ó 
ò 	ˆJð !×1Ñ1°*·.±.Ó2BÓCˆHØ×,Ñ,¨X°yÀ*ÕMØ“ñ	ùs   ‚A)A3Á,A3N©rc   rd   re   r‚   r   r-   r"   rt   rt   ´   s   „ ó	r-   rt   c                   ó    — e Zd Z e«       Zd„ Zy)ÚCompleterRulec              #   ó|   K  — t        |t        «      s&| j                  j                  |||«      E d {  –—†  y y 7 Œ­wr   ©Ú
isinstancer   Ú_fundamental_ruleÚapply©r+   r}   r~   r5   s       r"   rŠ   zCompleterRule.applyÄ   s6   è ø€ Ü˜$¤Ô)Ø×-Ñ-×3Ñ3°E¸7ÀDÓI×IÑIð *ØIúó   ‚1<³:´<N©rc   rd   re   rt   r‰   rŠ   r   r-   r"   r…   r…   Á   ó   „ Ù/Ó1ÐóJr-   r…   c                   ó    — e Zd Z e«       Zd„ Zy)ÚScannerRulec              #   ó|   K  — t        |t        «      r&| j                  j                  |||«      E d {  –—†  y y 7 Œ­wr   r‡   r‹   s       r"   rŠ   zScannerRule.applyÌ   s6   è ø€ Ü�dœHÔ%Ø×-Ñ-×3Ñ3°E¸7ÀDÓI×IÑIð &ØIúrŒ   Nr�   r   r-   r"   r�   r�   É   rŽ   r-   r�   c                   ó   — e Zd Zy)ÚPredictorRuleN©rc   rd   re   r   r-   r"   r“   r“   Ñ   ó   „ Ør-   r“   c                   ó   — e Zd Zd„ Zy)ÚFilteredCompleteFundamentalRulec              #   óh   K  — |j                  «       r| j                  |||«      E d {  –—†  y y 7 Œ­wr   )rx   Ú_apply_completer‹   s       r"   rŠ   z%FilteredCompleteFundamentalRule.applyÖ   s4   è ø€ ð ×ÑÔØ×+Ñ+¨E°7¸DÓA×AÑAð ØAús   ‚'2©0ª2N)rc   rd   re   rŠ   r   r-   r"   r—   r—   Õ   s   „ óBr-   r—   c                   ó   — e Zd Zd„ Zy)ÚFeatureCompleteFundamentalRulec              #   óÐ   K  — | j                   }|j                  «       }|j                  ||d|j                  «       ¬«      D ]  }|j	                  ||||«      E d {  –—†  Œ  y 7 Œ­wrv   )r‰   rA   rD   rz   rŠ   )r+   r}   r~   r   ÚfrrA   r€   s          r"   r‚   z0FeatureCompleteFundamentalRule._apply_incompleteã   so   è ø€ Ø×#Ñ#ˆØ�m‰m‹oˆð  Ÿ,™,Ø˜3¨D°i×6GÑ6GÓ6Ið 'ó 
ò 	GˆJð —x‘x  w°	¸:ÓF×FÑFñ	Gð Gús   ‚AA&ÁA$ÁA&Nrƒ   r   r-   r"   r›   r›   â   s   „ óGr-   r›   c                   ó   — e Zd Z e«       Zy)ÚFeatureCompleterRuleN©rc   rd   re   r›   r‰   r   r-   r"   rŸ   rŸ   î   ó   „ Ù6Ó8Ñr-   rŸ   c                   ó   — e Zd Z e«       Zy)ÚFeatureScannerRuleNr    r   r-   r"   r£   r£   ò   r¡   r-   r£   c                   ó   — e Zd Zy)ÚFeaturePredictorRuleNr”   r   r-   r"   r¥   r¥   ö   r•   r-   r¥   c                   ó(   — e Zd ZdZeddefd„Zdd„Zy)ÚIncrementalChartParsera  
    An *incremental* chart parser implementing Jay Earley's
    parsing algorithm:

    | For each index end in [0, 1, ..., N]:
    |   For each edge such that edge.end = end:
    |     If edge is incomplete and edge.next is not a part of speech:
    |       Apply PredictorRule to edge
    |     If edge is incomplete and edge.next is a part of speech:
    |       Apply ScannerRule to edge
    |     If edge is complete:
    |       Apply CompleterRule to edge
    | Return any complete parses in the chart
    r   é2   c                 ó&  — || _         || _        || _        || _        g | _        g | _        |D ]b  }|j                  dk(  r| j                  j                  |«       Œ.|j                  dk(  r| j
                  j                  |«       ŒYt        d«      ‚ y)aö  
        Create a new Earley chart parser, that uses ``grammar`` to
        parse texts.

        :type grammar: CFG
        :param grammar: The grammar used to parse texts.
        :type trace: int
        :param trace: The level of tracing that should be used when
            parsing a text.  ``0`` will generate no tracing output;
            and higher numbers will produce more verbose tracing
            output.
        :type trace_chart_width: int
        :param trace_chart_width: The default total width reserved for
            the chart in trace output.  The remainder of each line will
            be used to display edges.
        :param chart_class: The class that should be used to create
            the charts used by this parser.
        r   r`   z9Incremental inference rules must have NUM_EDGES == 0 or 1N)	Ú_grammarÚ_traceÚ_trace_chart_widthÚ_chart_classÚ_axiomsÚ_inference_rulesÚ	NUM_EDGESrS   rP   )r+   r~   ÚstrategyÚtraceÚtrace_chart_widthÚchart_classÚrules          r"   Ú__init__zIncrementalChartParser.__init__/  sŽ   € ð4  ˆŒØˆŒØ"3ˆÔØ'ˆÔàˆŒØ "ˆÔØò 	ˆDØ�~‰~ Ò"Ø—‘×#Ñ# DÕ)Ø—‘ 1Ò$Ø×%Ñ%×,Ñ,¨TÕ2ä ØRóð ñ	r-   Nc           	      ó>  — |€| j                   }| j                  }t        |«      }| j                  j	                  |«       | j                  |«      }| j                  }| j                  |j                  «       dz   z  }|rt        |j                  |«      «       | j                  D ])  }t        |j                  ||«      «      } ||||||«       Œ+ | j                  }	t        |j                  «       dz   «      D ]   }
|dkD  rt        d|
d«       t        |j                  |
¬«      «      }|sŒ3|j                  «       }|	D ]V  }t        |j                  |||«      «      } ||||||«       |D ]'  }|j!                  «       |
k(  sŒ|j#                  |«       Œ) ŒX |rŒnŒ¢ |S )Nr`   z
* Processing queue:ú
)rA   )r«   Ú_trace_new_edgesr/   rª   Úcheck_coverager­   r¬   rb   ÚprintÚpretty_format_leavesr®   rŠ   r¯   ra   rD   ÚpoprA   rS   )r+   Útokensr²   Útrace_new_edgesr}   r~   Útrace_edge_widthÚaxiomÚ	new_edgesÚinference_rulesrA   Úagendar5   rµ   r�   s                  r"   Úchart_parsez"IncrementalChartParser.chart_parseZ  s”  € Øˆ=Ø—K‘KˆEØ×/Ñ/ˆä�f“ˆØ�‰×$Ñ$ VÔ,Ø×!Ñ! &Ó)ˆØ—-‘-ˆð  ×2Ñ2°u×7GÑ7GÓ7IÈAÑ7MÑNÐÙÜ�%×,Ñ,Ð-=Ó>Ô?à—\‘\ò 	NˆEÜ˜UŸ[™[¨°Ó8Ó9ˆIÙ˜E 5¨)°UÐ<LÕMð	Nð ×/Ñ/ˆÜ˜×)Ñ)Ó+¨aÑ/Ó0ò 	4ˆCØ�qŠyÜÐ-¨s°DÔ9Ü˜%Ÿ,™,¨3˜,Ó/Ó0ˆFÚØ—z‘z“|�Ø+ò 4�DÜ $ T§Z¡Z°°wÀÓ%EÓ F�IÙ# E¨4°¸EÐCSÔTØ$-ò 4˜Ø#Ÿ<™<›>¨SÓ0Ø"ŸM™M¨(Õ3ñ4ð4ó ð		4ð ˆr-   r   )rc   rd   re   Ú__doc__ÚBU_LC_INCREMENTAL_STRATEGYr   r¶   rÅ   r   r-   r"   r§   r§     s    „ ñð$ ,ØØØ$ó)ôV!r-   r§   c                   ó   — e Zd Zd„ Zy)ÚEarleyChartParserc                 ó<   — t        j                  | |t        fi |¤Ž y r   )r§   r¶   ÚEARLEY_STRATEGY©r+   r~   Úparser_argss      r"   r¶   zEarleyChartParser.__init__  s   € Ü×'Ñ'¨¨g´ÑVÈ+ÓVr-   N©rc   rd   re   r¶   r   r-   r"   rÉ   rÉ   ~  s   „ óWr-   rÉ   c                   ó   — e Zd Zd„ Zy)ÚIncrementalTopDownChartParserc                 ó<   — t        j                  | |t        fi |¤Ž y r   )r§   r¶   ÚTD_INCREMENTAL_STRATEGYrÌ   s      r"   r¶   z&IncrementalTopDownChartParser.__init__„  ó    € Ü×'Ñ'Ø�'Ô2ñ	
Ø6Aó	
r-   NrÎ   r   r-   r"   rÐ   rÐ   ƒ  ó   „ ó
r-   rÐ   c                   ó   — e Zd Zd„ Zy)ÚIncrementalBottomUpChartParserc                 ó<   — t        j                  | |t        fi |¤Ž y r   )r§   r¶   ÚBU_INCREMENTAL_STRATEGYrÌ   s      r"   r¶   z'IncrementalBottomUpChartParser.__init__‹  rÓ   r-   NrÎ   r   r-   r"   rÖ   rÖ   Š  rÔ   r-   rÖ   c                   ó   — e Zd Zd„ Zy)Ú(IncrementalBottomUpLeftCornerChartParserc                 ó<   — t        j                  | |t        fi |¤Ž y r   )r§   r¶   rÇ   rÌ   s      r"   r¶   z1IncrementalBottomUpLeftCornerChartParser.__init__’  s    € Ü×'Ñ'Ø�'Ô5ñ	
Ø9Dó	
r-   NrÎ   r   r-   r"   rÚ   rÚ   ‘  rÔ   r-   rÚ   c                   ó   — e Zd Zd„ Zy)Ú IncrementalLeftCornerChartParserc                 ór   — |j                  «       st        d«      ‚t        j                  | |t        fi |¤Ž y )NzNIncrementalLeftCornerParser only works for grammars without empty productions.)Úis_nonemptyrP   r§   r¶   ÚLC_INCREMENTAL_STRATEGYrÌ   s      r"   r¶   z)IncrementalLeftCornerChartParser.__init__™  s@   € Ø×"Ñ"Ô$Üð-óð ô 	×'Ñ'Ø�'Ô2ñ	
Ø6Aó	
r-   NrÎ   r   r-   r"   rÝ   rÝ   ˜  s   „ ó
r-   rÝ   c                   ó   — e Zd Zedefd„Zy)ÚFeatureIncrementalChartParseré   c                 ó:   — t        j                  | |f|||dœ|¤Ž y )N)r±   r³   r´   )r§   r¶   )r+   r~   r±   r³   r´   rÍ   s         r"   r¶   z&FeatureIncrementalChartParser.__init__Ä  s2   € ô 	×'Ñ'ØØð	
ð Ø/Ø#ñ	
ð ó	
r-   N)rc   rd   re   Ú"BU_LC_INCREMENTAL_FEATURE_STRATEGYrg   r¶   r   r-   r"   râ   râ   Ã  s   „ ð 4ØØ+ô
r-   râ   c                   ó   — e Zd Zd„ Zy)ÚFeatureEarleyChartParserc                 ó<   — t        j                  | |t        fi |¤Ž y r   )râ   r¶   ÚEARLEY_FEATURE_STRATEGYrÌ   s      r"   r¶   z!FeatureEarleyChartParser.__init__×  s    € Ü%×.Ñ.Ø�'Ô2ñ	
Ø6Aó	
r-   NrÎ   r   r-   r"   rç   rç   Ö  rÔ   r-   rç   c                   ó   — e Zd Zd„ Zy)Ú$FeatureIncrementalTopDownChartParserc                 ó<   — t        j                  | |t        fi |¤Ž y r   )râ   r¶   ÚTD_INCREMENTAL_FEATURE_STRATEGYrÌ   s      r"   r¶   z-FeatureIncrementalTopDownChartParser.__init__Þ  ó    € Ü%×.Ñ.Ø�'Ô:ñ	
Ø>Ió	
r-   NrÎ   r   r-   r"   rë   rë   Ý  rÔ   r-   rë   c                   ó   — e Zd Zd„ Zy)Ú%FeatureIncrementalBottomUpChartParserc                 ó<   — t        j                  | |t        fi |¤Ž y r   )râ   r¶   ÚBU_INCREMENTAL_FEATURE_STRATEGYrÌ   s      r"   r¶   z.FeatureIncrementalBottomUpChartParser.__init__å  rî   r-   NrÎ   r   r-   r"   rð   rð   ä  rÔ   r-   rð   c                   ó   — e Zd Zd„ Zy)Ú/FeatureIncrementalBottomUpLeftCornerChartParserc                 ó<   — t        j                  | |t        fi |¤Ž y r   )râ   r¶   rå   rÌ   s      r"   r¶   z8FeatureIncrementalBottomUpLeftCornerChartParser.__init__ì  s    € Ü%×.Ñ.Ø�'Ô=ñ	
ØALó	
r-   NrÎ   r   r-   r"   rô   rô   ë  rÔ   r-   rô   c                 ó.  — ddl }ddl}ddlm}  |«       }	|rt	        d«       t	        |	«       t	        d«       t	        |«       |j                  «       }
t	        |
«       t	        «        t        |	|¬«      }t        «       }|j                  |
«      }t        |j                  |	j                  «       «      «      }t        «       |z
  }|rt        |«      |k(  sJ d«       ‚|r|D ]  }t	        |«       Œ nt	        dt        |«      «       | rt	        d	|«       yy)
z0
    A demonstration of the Earley parsers.
    r   N)Údemo_grammarz	* Grammarz* Sentence:)r²   zNot all parses foundz	Nr trees:zTime:)ÚsysÚtimeÚnltk.parse.chartr÷   r»   ÚsplitrÉ   r   rÅ   r/   Úparsesrw   Úlen)Úprint_timesÚprint_grammarÚprint_treesr²   ÚsentÚ	numparsesrø   rù   r÷   r~   r¾   ÚearleyÚtr}   rü   Útrees                   r"   Údemor  ÷  sò   € ó Ûå-ñ ‹n€GÙÜˆkÔÜˆgŒô 
ˆ-ÔÜ	ˆ$„KØ�Z‰Z‹\€FÜ	ˆ&„MÜ	„Gô ˜w¨eÔ4€FÜ‹€AØ×Ñ˜vÓ&€EÜ�%—,‘,˜wŸ}™}›Ó/Ó0€FÜ‹˜Ñ€Añ Ü�6‹{˜iÒ'Ð?Ð)?Ó?Ð'ÙØò 	ˆDÜ�$�Kñ	ô 	ˆkœ3˜v›;Ô'ÙÜˆg�qÕð r-   Ú__main__N)TFTé   z$I saw John with a dog with my cookieé   );rÆ   rù   r   rú   r   r   r   r   r   r	   r
   r   r   r   r   r   r   Únltk.parse.featurechartr   r   r   r   r   r   r   r   r   rg   rt   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  rc   r   r-   r"   ú<module>r     s¹  ðñõ  ÷÷ ÷ õ ÷	÷ 	ó 	ô >,�uô >,ôB.9Ð.°ô .9ôl
Ð7ô 
ôJÐ+ô JôJÐ)ô Jô	Ð,ô 	ôBÐ&Gô Bô	GÐ%Eô 	Gô9˜=ô 9ô9˜ô 9ô	Ð4ô 	ñ ƒNÙÓÙƒOÙƒMÙƒOð€ñ ƒNÙÓÙÓÙÓð	Ð ñ ƒNÙÓÙÓÙÓð	Ð ñ ƒNÙÓÙÓ ÙÓð	Ð ñ ƒNÙ&Ó(Ù#Ó%ðÐ ô\˜[ô \ô~WÐ.ô Wô

Ð$:ô 
ô
Ð%;ô 
ô
Ð/Eô 
ô	
Ð'=ô 	
ñ" ƒNÙÓÙÓÙÓÙÓðÐ ñ ƒNÙÓÙÓÙ"Ó$ð	#Ð ñ ƒNÙÓÙÓ Ù"Ó$ð	#Ð ñ ƒNÙÓÙ%Ó'Ù"Ó$ð	&Ð "ô
Ð$:Ð<Nô 
ô&
Ð<ô 
ô
Ð+Hô 
ô
Ð,Iô 
ô
Ð6Sô 
ð ØØØ
Ø	/Øó-ð` ˆzÒÙ…Fð r-   