§
    ž˜ºhÂ	  ã                   óf   — d dl Z d dlZd dlmZ d
d„Zd„ Zd„ ZdZdd„Ze	d	k    r e¦   «          dS dS )é    N)ÚNonterminalc                 óº   — |s|                       ¦   «         }|€t          j        ¦   «         dz  dz
  }t          | |g|¦  «        }|rt	          j        ||¦  «        }|S )am  
    Generates an iterator of all sentences from a CFG.

    :param grammar: The Grammar used to generate sentences.
    :param start: The Nonterminal from which to start generate sentences.
    :param depth: The maximal depth of the generated tree.
    :param n: The maximum number of sentences to return.
    :return: An iterator of lists of terminal tokens.
    Né   )ÚstartÚsysÚgetrecursionlimitÚ_generate_allÚ	itertoolsÚislice)Úgrammarr   ÚdepthÚnÚiters        ú[/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/nltk/parse/generate.pyÚgenerater      sh   € ð ð  Ø—’‘”ˆØ€}åÔ&Ñ(Ô(¨AÑ-°Ñ2ˆå˜ 5 '¨5Ñ1Ô1€Dàð )ÝÔ  aÑ(Ô(ˆà€Kó    c              #   óÚ   K  — |rb	 t          | |d         |¦  «        D ]%}t          | |dd …         |¦  «        D ]	}||z   V — Œ
Œ&d S # t          $ r}t          d¦  «        |‚d }~ww xY wg V — d S )Nr   é   z}The grammar has rule(s) that yield infinite recursion!
Eventually use a lower 'depth', or a higher 'sys.setrecursionlimit()'.)Ú_generate_oner	   ÚRecursionErrorÚRuntimeError)r   Úitemsr   Úfrag1Úfrag2Úerrors         r   r	   r	   )   sÄ   è è € Øð ð		Ý& w°°a´¸%Ñ@Ô@ð (ð (�Ý*¨7°E¸!¸"¸"´I¸uÑEÔEð (ð (�EØ %™-Ð'Ð'Ð'Ð'ð(ð(ð (øõ ð 	ð 	ð 	åðHñô ð ðøøøøð	øøøð ˆˆˆˆˆs   †=A Á
A$ÁAÁA$c              #   óÜ   K  — |dk    rct          |t          ¦  «        rG|                      |¬¦  «        D ].}t          | |                     ¦   «         |dz
  ¦  «        E d {V —† Œ/d S |gV — d S d S )Nr   )Úlhsr   )Ú
isinstancer   Úproductionsr	   Úrhs)r   Úitemr   Úprods       r   r   r   9   sš   è è € Øˆq‚y€yÝ�d�KÑ(Ô(ð 	Ø×+Ò+°Ð+Ñ5Ô5ð Ið I�Ý(¨°$·(²(±*´*¸eÀa¹iÑHÔHÐHÐHÐHÐHÐHÐHÐHÐHðIð Ið �&ˆLˆLˆLˆLˆLð €yr   zš
  S -> NP VP
  NP -> Det N
  PP -> P NP
  VP -> 'slept' | 'saw' NP | 'walked' PP
  Det -> 'the' | 'a'
  N -> 'man' | 'park' | 'dog'
  P -> 'in' | 'with'
é   c                 ó,  — ddl m} t          d| fz  ¦  «         t          t          ¦  «         |                     t          ¦  «        }t          t          || ¬¦  «        d¦  «        D ],\  }}t          d|d                     |¦  «        fz  ¦  «         Œ-d S )Nr   )ÚCFGz3Generating the first %d sentences for demo grammar:)r   r   z%3d. %sú )Únltk.grammarr%   ÚprintÚdemo_grammarÚ
fromstringÚ	enumerater   Újoin)ÚNr%   r   r   Úsents        r   Údemor/   M   s¢   € Ø Ð Ð Ð Ð Ð å	Ð
?À1À$Ñ
FÑGÔGÐGÝ	�,ÑÔÐØ�nŠn�\Ñ*Ô*€GÝ�X g°Ð3Ñ3Ô3°QÑ7Ô7ð /ð /‰ˆˆ4Ýˆi˜1˜cŸhšh t™nœnÐ-Ñ-Ñ.Ô.Ð.Ð.ð/ð /r   Ú__main__)NNN)r#   )
r
   r   r'   r   r   r	   r   r)   r/   Ú__name__© r   r   ú<module>r3      sŸ   ðð Ð Ð Ð Ø 
€
€
€
à $Ð $Ð $Ð $Ð $Ð $ðð ð ð ð0ð ð ð ð ð ð€ð/ð /ð /ð /ð ˆzÒÐØ€D�F„F€F€F€Fð Ðr   