+
    ÖÇÜh6E  ã                   ól  € R t ^ RIHt ^ RIHtHtHtHtHtH	t	H
t
HtHtHtHtHtHt ^ RIHtHtHtHtHtHtHtHt  ! R R]4      t ! R R]]4      t ! R R	]4      t ! R
 R]4      t ! R R]4      t ! R R]4      t ! R R]4      t  ! R R]4      t! ! R R]4      t" ! R R]4      t# ! R R]4      t$]! 4       ]! 4       ]! 4       ]! 4       ]! 4       .t%]! 4       ]! 4       ]! 4       ]! 4       .t&]! 4       ]
! 4       ]! 4       ]! 4       .t']! 4       ]
! 4       ]! 4       ]! 4       .t(]! 4       ]! 4       ] ! 4       .t) ! R R]4      t* ! R R]*4      t+ ! R R]*4      t, ! R  R!]*4      t- ! R" R#]*4      t. ! R$ R%]*4      t/]! 4       ]! 4       ]"! 4       ]#! 4       ]$! 4       .t0]! 4       ]! 4       ]! 4       ]!! 4       .t1]! 4       ]! 4       ]! 4       ]!! 4       .t2]! 4       ]! 4       ]! 4       ]!! 4       .t3 ! R& R']*]4      t4 ! R( R)]44      t5 ! R* R+]44      t6 ! R, R-]44      t7 ! R. R/]44      t8R3R0 lt9]:R18X  d
   ]9! 4        R2# R2# )4aÕ  
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                   óP   a € ] tR t^=t o R tR tR tR tR tR t	R t
R tR	tV tR
# )ÚIncrementalChartc                ó¼   € \         ;QJ d"    . R  V P                  4        4       F  NK  	  5M! R  V P                  4        4       4      V n        / V n        / V n        R# )c              3   ó&   "  € T F  p. x € K	  	  R # 5i©N© ©Ú.0Úxs   & Ú8/usr/lib/python3/dist-packages/nltk/parse/earleychart.pyÚ	<genexpr>Ú.IncrementalChart.initialize.<locals>.<genexpr>@   s   é € Ð>Ñ,= q¥Ó,=ùó   ‚N)ÚtupleÚ
_positionsÚ
_edgelistsÚ_edge_to_cplsÚ_indexes©Úselfs   &r!   Ú
initializeÚIncrementalChart.initialize>   sC   € çœ%Ñ>¨D¯O©OÔ,=Ó>Ÿ%™%Ñ>¨D¯O©OÔ,=Ó>Ó>ˆŒð  ˆÔð ˆŽó    c                ó4   € \        V P                  4       4      # r   )ÚlistÚ	iteredgesr*   s   &r!   ÚedgesÚIncrementalChart.edgesI   s   € Ü�D—N‘NÓ$Ó%Ð%r.   c                ó(   € R  V P                    4       # )c              3   ó4   "  € T F  q F  q"x € K  	  K  	  R # 5ir   r   )r   ÚedgelistÚedges   &  r!   r"   Ú-IncrementalChart.iteredges.<locals>.<genexpr>M   s   é € ÐJ¡_˜Â¸”Á‘£_ùs   ‚)r'   r*   s   &r!   r1   ÚIncrementalChart.iteredgesL   s   € ÙJ T§_¢_ÓJÐJr.   c                ó¢  a€ V P                   V,          pS/ 8X  d   \        V4      # \        SP                  4       4      p\	        V4      pW@P
                  9  d   V P                  V4       \        ;QJ d    . V3R  lV 4       F  NK  	  5M! V3R  lV 4       4      p\        V P
                  V,          V,          P                  V. 4      4      # )c              3   ó6   <"  € T F  pSV,          x € K  	  R # 5ir   r   )r   ÚkeyÚrestrictionss   & €r!   r"   Ú*IncrementalChart.select.<locals>.<genexpr>^   s   øé € Ð=±*¨3�\ #×&Ò&³*ùs   ƒ©r'   ÚiterÚsortedÚkeysr%   r)   Ú
_add_indexÚget©r+   Úendr=   r6   Ú
restr_keysÚvalss   &&l   r!   ÚselectÚIncrementalChart.selectO   s    ø€ Ø—?‘? 3Õ'ˆð ˜2ÔÜ˜“>Ð!ô ˜L×-Ñ-Ó/Ó0ˆ
Ü˜:Ó&ˆ
ð Ÿ]™]Ô*Ø�O‰O˜JÔ'çŒuÔ=±*Ó=�u‰uÔ=±*Ó=Ó=ˆÜ�D—M‘M *Õ-¨cÕ2×6Ñ6°t¸RÓ@ÓAÐAr.   c                ó  a€ V F+  p\        \        V4      '       d   K  \        R V,          4      h	  \        ;QJ d"    . R V P	                  4        4       F  NK  	  5M! R V P	                  4        4       4      ;q0P
                  V&   \        V P                  4       Fi  w  rEW4,          pV FV  o\        ;QJ d    . V3R lV 4       F  NK  	  5M! V3R lV 4       4      pVP                  V. 4      P                  S4       KX  	  Kk  	  R# )úBad restriction: %sc              3   ó&   "  € T F  p/ x € K	  	  R # 5ir   r   r   s   & r!   r"   Ú.IncrementalChart._add_index.<locals>.<genexpr>h   ó   é € Ð1PÑ>O¸µ"Ó>Oùr$   c              3   óF   <"  € T F  p\        SV4      ! 4       x € K  	  R # 5ir   ©Úgetattr©r   r<   r7   s   & €r!   r"   rN   n   s   øé € ÐH¹Z°cœW T¨3Ô/×1Ð1»Zùó   ƒ!N©
Úhasattrr   Ú
ValueErrorr%   r&   r)   Ú	enumerater'   Ú
setdefaultÚappend©	r+   rG   r<   ÚindexrF   r6   Ú
this_indexrH   r7   s	   &&      @r!   rC   ÚIncrementalChart._add_indexa   sÆ   ø€ ãˆCÜœ5 #×&Ô&Ü Ð!6¸Õ!<Ó=Ð=ñ ÷
 -2¬EÑ1P¸d¿o¹oÔ>OÓ1P¯E©EÑ1P¸d¿o¹oÔ>OÓ1PÓ,PÐPˆ—‘˜jÑ)ô ' t§¡Ö7‰MˆCØ�ˆJÛ �ß”uÔH¹ZÓH—u‘uÔH¹ZÓHÓH�Ø×%Ñ% d¨BÓ/×6Ñ6°tÖ<ó !ó 8r.   c                ó   a€ SP                  4       pV P                  P                  4        F^  w  r4\        ;QJ d    . V3R  lV 4       F  NK  	  5M! V3R  lV 4       4      pWB,          P	                  V. 4      P                  S4       K`  	  R# )c              3   óF   <"  € T F  p\        SV4      ! 4       x € K  	  R # 5ir   rQ   rS   s   & €r!   r"   Ú:IncrementalChart._register_with_indexes.<locals>.<genexpr>t   s   øé € ÐD¹°#œ  sÔ+×-Ð-»ùrT   N©rF   r)   Úitemsr%   rY   rZ   ©r+   r7   rF   rG   r\   rH   s   &f    r!   Ú_register_with_indexesÚ'IncrementalChart._register_with_indexesq   sc   ø€ Ø�h‰h‹jˆØ!%§¡×!4Ñ!4Ö!6ÑˆJß”5ÔD¹ÓD—5‘5ÔD¹ÓDÓDˆDØ�J×!Ñ! $¨Ó+×2Ñ2°4Ö8ó "7r.   c                óf   € V P                   VP                  4       ,          P                  V4       R # r   )r'   rF   rZ   )r+   r7   s   &&r!   Ú_append_edgeÚIncrementalChart._append_edgew   s   € Ø�‰˜Ÿ™›
Õ#×*Ñ*¨4Ö0r.   c                óB   € \        V P                  4       ^,           4      # )é   )ÚrangeÚ
num_leavesr*   s   &r!   r&   ÚIncrementalChart._positionsz   s   € Ü�T—_‘_Ó&¨Õ*Ó+Ð+r.   )r(   r'   r)   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r,   r2   r1   rI   rC   re   rh   r&   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r!   r   r   =   s4   ø‡ € ò	ò&òKòBò$=ò 9ò1÷,ð ,r.   r   c                   ó2   a € ] tR t^~t o R tR tR tRtV tR# )ÚFeatureIncrementalChartc                óª  a a€ S P                   V,          pS/ 8X  d   \        V4      # \        SP                  4       4      p\	        V4      pVS P
                  9  d   S P                  V4       \        ;QJ d    . VV 3R  lV 4       F  NK  	  5M! VV 3R  lV 4       4      p\        S P
                  V,          V,          P                  V. 4      4      # )c              3   óT   <"  € T F  pSP                  SV,          4      x € K  	  R # 5ir   )Ú_get_type_if_possible)r   r<   r=   r+   s   & €€r!   r"   Ú1FeatureIncrementalChart.select.<locals>.<genexpr>Ž   s'   øé € ð 
ÙEO¸cˆD×&Ñ& |°CÕ'8×9Ð9ÃZùs   ƒ%(r?   rE   s   f&l   r!   rI   ÚFeatureIncrementalChart.select   s°   ù€ Ø—?‘? 3Õ'ˆð ˜2ÔÜ˜“>Ð!ô ˜L×-Ñ-Ó/Ó0ˆ
Ü˜:Ó&ˆ
ð ˜TŸ]™]Ô*Ø�O‰O˜JÔ'çŒuõ 
ÙEOó
�u‰uõ 
ÙEOó
ó 
ˆô �D—M‘M *Õ-¨cÕ2×6Ñ6°t¸RÓ@ÓAÐAr.   c                ó"  a a€ V F+  p\        \        V4      '       d   K  \        R V,          4      h	  \        ;QJ d"    . R S P	                  4        4       F  NK  	  5M! R S P	                  4        4       4      ;pS P
                  V&   \        S P                  4       Fk  w  rEW4,          pV FX  o\        ;QJ d    . VV 3R lV 4       F  NK  	  5M! VV 3R lV 4       4      pVP                  V. 4      P                  S4       KZ  	  Km  	  R# )rL   c              3   ó&   "  € T F  p/ x € K	  	  R # 5ir   r   r   s   & r!   r"   Ú5FeatureIncrementalChart._add_index.<locals>.<genexpr>š   rO   r$   c              3   ód   <"  € T F%  pSP                  \        SV4      ! 4       4      x € K'  	  R # 5ir   ©r{   rR   ©r   r<   r7   r+   s   & €€r!   r"   r€       s0   øé € ð á)˜ð ×.Ñ.¬w°t¸SÔ/AÓ/C×DÐDÛ)ùó   ƒ-0NrU   r[   s	   f&      @r!   rC   Ú"FeatureIncrementalChart._add_index“   sÖ   ù€ ãˆCÜœ5 #×&Ô&Ü Ð!6¸Õ!<Ó=Ð=ñ ÷
 -2¬EÑ1P¸d¿o¹oÔ>OÓ1P¯E©EÑ1P¸d¿o¹oÔ>OÓ1PÓ,PÐPˆ�—‘˜jÑ)ô ' t§¡Ö7‰MˆCØ�ˆJÛ �ß”uõ á)ó—u‘uõ á)óó �ð ×%Ñ% d¨BÓ/×6Ñ6°tÖ<ó !ó 8r.   c                ó&  a a€ SP                  4       pS P                  P                  4        F`  w  r4\        ;QJ d    . VV 3R  lV 4       F  NK  	  5M! VV 3R  lV 4       4      pWB,          P	                  V. 4      P                  S4       Kb  	  R# )c              3   ód   <"  € T F%  pSP                  \        SV4      ! 4       4      x € K'  	  R # 5ir   r‚   rƒ   s   & €€r!   r"   ÚAFeatureIncrementalChart._register_with_indexes.<locals>.<genexpr>©   s,   øé € ð ÙLVÀS�×*Ñ*¬7°4¸Ô+=Ó+?×@Ð@ËJùr„   Nrb   rd   s   ff    r!   re   Ú.FeatureIncrementalChart._register_with_indexes¦   sq   ù€ Ø�h‰h‹jˆØ!%§¡×!4Ñ!4Ö!6ÑˆJß”5õ ÙLVó—5‘5õ ÙLVóó ˆDð �J×!Ñ! $¨Ó+×2Ñ2°4Ö8ó	 "7r.   r   N)	ro   rp   rq   rr   rI   rC   re   rs   rt   ru   s   @r!   rx   rx   ~   s   ø‡ € òBò(=÷&9ð 9r.   rx   c                   ó&   a € ] tR t^´t o R tRtV tR# )ÚCompleteFundamentalRulec              #  óú   "  € VP                  4       pVP                  WDR VP                  4       R7       F@  pVP                  VP                  4       4      pVP	                  WcV4      '       g   K<  Vx € KB  	  R# 5i©T)ÚstartrF   Úis_completeÚlhsN)rF   rI   ÚnextsymÚmove_dot_forwardÚinsert_with_backpointer)r+   ÚchartÚgrammarÚ	left_edgerF   Ú
right_edgeÚnew_edges   &&&&   r!   Ú_apply_incompleteÚ)CompleteFundamentalRule._apply_incompleteµ   sk   é € Ø�m‰m‹oˆð  Ÿ,™,Ø¨D°i×6GÑ6GÓ6Ið 'ö 
ˆJð !×1Ñ1°*·.±.Ó2BÓCˆHØ×,Ñ,¨XÀ*×MÔMØ”ó
ùs   ‚A*A;Á1
A;r   N©ro   rp   rq   rr   r™   rs   rt   ru   s   @r!   r‹   r‹   ´   s   ø‡ € ÷	ð 	r.   r‹   c                   ó4   a € ] tR t^Át o ]! 4       tR tRtV tR# )ÚCompleterRulec              #  óŠ   "  € \        V\        4      '       g'   V P                  P                  WV4       R j  x€L
  R # R #  L5ir   ©Ú
isinstancer   Ú_fundamental_ruleÚapply©r+   r”   r•   r7   s   &&&&r!   r¢   ÚCompleterRule.applyÄ   s6   é € Ü˜$¤×)Ò)Ø×-Ñ-×3Ñ3°EÀDÓI×IÒIñ *ÙIùó   ‚6A¸A¹	Ar   N©	ro   rp   rq   rr   r‹   r¡   r¢   rs   rt   ru   s   @r!   r�   r�   Á   ó   ø‡ € Ù/Ó1Ð÷Jð Jr.   r�   c                   ó4   a € ] tR t^Ét o ]! 4       tR tRtV tR# )ÚScannerRulec              #  óŠ   "  € \        V\        4      '       d'   V P                  P                  WV4       R j  x€L
  R # R #  L5ir   rŸ   r£   s   &&&&r!   r¢   ÚScannerRule.applyÌ   s6   é € Ü�dœH×%Ò%Ø×-Ñ-×3Ñ3°EÀDÓI×IÒIñ &ÙIùr¥   r   Nr¦   ru   s   @r!   r©   r©   É   r§   r.   r©   c                   ó   € ] tR t^ÑtRtR# )ÚPredictorRuler   N©ro   rp   rq   rr   rs   r   r.   r!   r­   r­   Ñ   ó   † Ûr.   r­   c                   ó&   a € ] tR t^Õt o R tRtV tR# )ÚFilteredCompleteFundamentalRulec              #  óv   "  € VP                  4       '       d   V P                  WV4       R j  x€L
  R # R #  L5ir   )r�   Ú_apply_completer£   s   &&&&r!   r¢   Ú%FilteredCompleteFundamentalRule.applyÖ   s4   é € ð ×Ñ×ÒØ×+Ñ+¨E¸DÓA×AÒAñ ÙAùs   ‚,9®7¯	9r   N)ro   rp   rq   rr   r¢   rs   rt   ru   s   @r!   r±   r±   Õ   s   ø‡ € ÷Bð Br.   r±   c                   ó&   a € ] tR t^ât o R tRtV tR# )ÚFeatureCompleteFundamentalRulec              #  óÐ   "  € V P                   pVP                  4       pVP                  WUR VP                  4       R7       F  pVP	                  WW64       Rj  x€L
  K  	  R#  L
5ir�   )r¡   rF   rI   r‘   r¢   )r+   r”   r•   r–   ÚfrrF   r—   s   &&&&   r!   r™   Ú0FeatureCompleteFundamentalRule._apply_incompleteã   sa   é € Ø×#Ñ#ˆØ�m‰m‹oˆð  Ÿ,™,Ø¨D°i×6GÑ6GÓ6Ið 'ö 
ˆJð —x‘x °	ÓF×FÒFó
ñ Gùs   ‚AA&ÁA$ÁA&r   Nr›   ru   s   @r!   r¶   r¶   â   s   ø‡ € ÷Gð Gr.   r¶   c                   ó$   € ] tR t^ît]! 4       tRtR# )ÚFeatureCompleterRuler   N©ro   rp   rq   rr   r¶   r¡   rs   r   r.   r!   r»   r»   î   ó   † Ù6Ó8Ôr.   r»   c                   ó$   € ] tR t^òt]! 4       tRtR# )ÚFeatureScannerRuler   Nr¼   r   r.   r!   r¿   r¿   ò   r½   r.   r¿   c                   ó   € ] tR t^ötRtR# )ÚFeaturePredictorRuler   Nr®   r   r.   r!   rÁ   rÁ   ö   r¯   r.   rÁ   c                   ó@   a € ] tR tRt o Rt]^ ^2]3R ltRR ltRt	V t
R# )ÚIncrementalChartParseri  aÒ  
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
c                ó.  € Wn         W0n        W@n        WPn        . V n        . V n        V Fh  pVP                  ^ 8X  d   V P                  P                  V4       K1  VP                  ^8X  d   V P
                  P                  V4       K_  \        R4      h	  R# )av  
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.
z9Incremental inference rules must have NUM_EDGES == 0 or 1N)	Ú_grammarÚ_traceÚ_trace_chart_widthÚ_chart_classÚ_axiomsÚ_inference_rulesÚ	NUM_EDGESrZ   rW   )r+   r•   ÚstrategyÚtraceÚtrace_chart_widthÚchart_classÚrules   &&&&&& r!   Ú__init__ÚIncrementalChartParser.__init__/  s�   € ð4  ŒØŒØ"3ÔØ'ÔàˆŒØ "ˆÔÛˆDØ�~‰~ Ô"Ø—‘×#Ñ# DÖ)Ø—‘ 1Ô$Ø×%Ñ%×,Ñ,¨TÖ2ä ØRóð ó r.   Nc           	     ó|  € Vf   V P                   pV P                  p\        V4      pV P                  P	                  V4       V P                  V4      pV P                  pV P                  VP                  4       ^,           ,          pV'       d   \        VP                  V4      4       V P                   F'  p\        VP                  WE4      4      pV! WGW‚V4       K)  	  V P                  p	\        VP                  4       ^,           4       F«  p
V^8”  d   \        RV
R4       \        VP                  V
R7      4      pV'       g   K<  VP                  4       pV	 FY  p\        VP                  WEV4      4      pV! WMW‚V4       V F+  pVP!                  4       V
8X  g   K  VP#                  V4       K-  	  K[  	  K{  	  V# )Nz
* Processing queue:Ú
)rF   )rÆ   Ú_trace_new_edgesr0   rÅ   Úcheck_coveragerÈ   rÇ   rm   ÚprintÚpretty_format_leavesrÉ   r¢   rÊ   rl   rI   ÚpoprF   rZ   )r+   ÚtokensrÍ   Útrace_new_edgesr”   r•   Útrace_edge_widthÚaxiomÚ	new_edgesÚinference_rulesrF   Úagendar7   rÐ   r˜   s   &&&            r!   Úchart_parseÚ"IncrementalChartParser.chart_parseZ  so  € ØŠ=Ø—K‘KˆEØ×/Ñ/ˆä�f“ˆØ�‰×$Ñ$ VÔ,Ø×!Ñ! &Ó)ˆØ—-‘-ˆð  ×2Ñ2°u×7GÑ7GÓ7IÈAÕ7MÕNÐßÜ�%×,Ñ,Ð-=Ó>Ô?à—\”\ˆEÜ˜UŸ[™[¨Ó8Ó9ˆIÙ˜E¨)Ð<LÖMñ "ð ×/Ñ/ˆÜ˜×)Ñ)Ó+¨aÕ/Ö0ˆCØ�qŒyÜÐ-¨s°DÔ9Ü˜%Ÿ,™,¨3˜,Ó/Ó0ˆFß‘&Ø—z‘z“|�Û+�DÜ $ T§Z¡Z°ÀÓ%EÓ F�IÙ# E°ÐCSÔTÛ$-˜Ø#Ÿ<™<›>¨SÖ0Ø"ŸM™M¨(Ö3ó %.ó ,ñ 1ð ˆr.   )rÉ   rÈ   rÅ   rÊ   rÆ   rÇ   r   )ro   rp   rq   rr   Ú__doc__ÚBU_LC_INCREMENTAL_STRATEGYr   rÑ   rá   rs   rt   ru   s   @r!   rÃ   rÃ     s(   ø‡ € ñð$ ,ØØØ$ô)÷V!ò !r.   rÃ   c                   ó&   a € ] tR tRt o R tRtV tR# )ÚEarleyChartParseri~  c                ó>   € \         P                  ! W\        3/ VB  R # r   )rÃ   rÑ   ÚEARLEY_STRATEGY©r+   r•   Úparser_argss   &&,r!   rÑ   ÚEarleyChartParser.__init__  s   € Ü×'Ò'¨´ÑVÈ+ÔVr.   r   N©ro   rp   rq   rr   rÑ   rs   rt   ru   s   @r!   ræ   ræ   ~  s   ø‡ € ÷Wð Wr.   ræ   c                   ó&   a € ] tR tRt o R tRtV tR# )ÚIncrementalTopDownChartParseriƒ  c                ó>   € \         P                  ! W\        3/ VB  R # r   )rÃ   rÑ   ÚTD_INCREMENTAL_STRATEGYré   s   &&,r!   rÑ   Ú&IncrementalTopDownChartParser.__init__„  ó   € Ü×'Ò'ØÔ2ñ	
Ø6Aô	
r.   r   Nrì   ru   s   @r!   rî   rî   ƒ  ó   ø‡ € ÷
ð 
r.   rî   c                   ó&   a € ] tR tRt o R tRtV tR# )ÚIncrementalBottomUpChartParseriŠ  c                ó>   € \         P                  ! W\        3/ VB  R # r   )rÃ   rÑ   ÚBU_INCREMENTAL_STRATEGYré   s   &&,r!   rÑ   Ú'IncrementalBottomUpChartParser.__init__‹  rò   r.   r   Nrì   ru   s   @r!   rõ   rõ   Š  ró   r.   rõ   c                   ó&   a € ] tR tRt o R tRtV tR# )Ú(IncrementalBottomUpLeftCornerChartParseri‘  c                ó>   € \         P                  ! W\        3/ VB  R # r   )rÃ   rÑ   rä   ré   s   &&,r!   rÑ   Ú1IncrementalBottomUpLeftCornerChartParser.__init__’  s   € Ü×'Ò'ØÔ5ñ	
Ø9Dô	
r.   r   Nrì   ru   s   @r!   rú   rú   ‘  ró   r.   rú   c                   ó&   a € ] tR tRt o R tRtV tR# )Ú IncrementalLeftCornerChartParseri˜  c                ó€   € VP                  4       '       g   \        R 4      h\        P                  ! W\        3/ VB  R# )zNIncrementalLeftCornerParser only works for grammars without empty productions.N)Úis_nonemptyrW   rÃ   rÑ   ÚLC_INCREMENTAL_STRATEGYré   s   &&,r!   rÑ   Ú)IncrementalLeftCornerChartParser.__init__™  sA   € Ø×"Ñ"×$Ò$Üð-óð ô 	×'Ò'ØÔ2ñ	
Ø6Aô	
r.   r   Nrì   ru   s   @r!   rþ   rþ   ˜  s   ø‡ € ÷
ð 
r.   rþ   c                   ó0   a € ] tR tRt o ]^]3R ltRtV tR# )ÚFeatureIncrementalChartParseriÃ  c           	     óB   € \         P                  ! V V3R VRVRV/VB  R# )rÌ   rÎ   rÏ   N)rÃ   rÑ   )r+   r•   rÌ   rÎ   rÏ   rê   s   &&&&&,r!   rÑ   Ú&FeatureIncrementalChartParser.__init__Ä  s@   € ô 	×'Ò'ØØñ	
ð ð	
ð 0ð		
ð
 $ð	
ð ô	
r.   r   N)	ro   rp   rq   rr   Ú"BU_LC_INCREMENTAL_FEATURE_STRATEGYrx   rÑ   rs   rt   ru   s   @r!   r  r  Ã  s   ø‡ € ð 4ØØ+÷
ò 
r.   r  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚFeatureEarleyChartParseriÖ  c                ó>   € \         P                  ! W\        3/ VB  R # r   )r  rÑ   ÚEARLEY_FEATURE_STRATEGYré   s   &&,r!   rÑ   Ú!FeatureEarleyChartParser.__init__×  s   € Ü%×.Ò.ØÔ2ñ	
Ø6Aô	
r.   r   Nrì   ru   s   @r!   r	  r	  Ö  ró   r.   r	  c                   ó&   a € ] tR tRt o R tRtV tR# )Ú$FeatureIncrementalTopDownChartParseriÝ  c                ó>   € \         P                  ! W\        3/ VB  R # r   )r  rÑ   ÚTD_INCREMENTAL_FEATURE_STRATEGYré   s   &&,r!   rÑ   Ú-FeatureIncrementalTopDownChartParser.__init__Þ  ó   € Ü%×.Ò.ØÔ:ñ	
Ø>Iô	
r.   r   Nrì   ru   s   @r!   r  r  Ý  ró   r.   r  c                   ó&   a € ] tR tRt o R tRtV tR# )Ú%FeatureIncrementalBottomUpChartParseriä  c                ó>   € \         P                  ! W\        3/ VB  R # r   )r  rÑ   ÚBU_INCREMENTAL_FEATURE_STRATEGYré   s   &&,r!   rÑ   Ú.FeatureIncrementalBottomUpChartParser.__init__å  r  r.   r   Nrì   ru   s   @r!   r  r  ä  ró   r.   r  c                   ó&   a € ] tR tRt o R tRtV tR# )Ú/FeatureIncrementalBottomUpLeftCornerChartParserië  c                ó>   € \         P                  ! W\        3/ VB  R # r   )r  rÑ   r  ré   s   &&,r!   rÑ   Ú8FeatureIncrementalBottomUpLeftCornerChartParser.__init__ì  s   € Ü%×.Ò.ØÔ=ñ	
ØALô	
r.   r   Nrì   ru   s   @r!   r  r  ë  ró   r.   r  c                óp  € ^ RI p^ RIp^ RIHp V! 4       p	V'       d   \	        R4       \	        V	4       \	        R4       \	        V4       VP                  4       p
\	        V
4       \	        4        \        W“R7      p\        4       pVP                  V
4      p\        VP                  V	P                  4       4      4      p\        4       V,
          pV'       d   \        V4      V8X  g   Q R4       hV'       d   V F  p\	        V4       K  	  M\	        R\        V4      4       V '       d   \	        RV4       R# R# )	z(
A demonstration of the Earley parsers.
N)Údemo_grammarz	* Grammarz* Sentence:)rÍ   zNot all parses foundz	Nr trees:zTime:)ÚsysÚtimeÚnltk.parse.chartr  r×   Úsplitræ   r   rá   r0   ÚparsesrŽ   Ú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Ô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   rx   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  r,  ro   r   r.   r!   Ú<module>r1     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.   