JL i ZddlZddlZddlmZd dZdZdZdZd dZe dk(reyy) N) Nonterminalc|s|j}|tjdzdz }t||g|}|rt 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. )startsysgetrecursionlimit _generate_all itertoolsislice)grammarrdepthniters Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/nltk/parse/generate.pygeneratersY   }&&(A-2 5'5 1Da( Kc#K|r3 t||d|D]}t||dd|D] }||z  ygy#t$r}td|d}~wwxYww)Nrz}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 frag1frag2errors rr r )s  &wa%@ (*7E!"IuE(E%-'( ( H  s%A1=A A AAAc#K|dkDrTt|tr>|j|D](}t||j |dz Ed{*y|gyy7w)Nr)lhsr) isinstancer productionsr rhs)r itemr prods rrr9sf qy dK (+++5 I($((*eaiHHH I&L IsA AAAz 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' cddlm}td|fztt|j t}t t ||dD]$\}}td|dj|fz&y)Nr)CFGz3Generating the first %d sentences for demo grammar:)rrz%3d. %s ) nltk.grammarr$print demo_grammar fromstring enumeraterjoin)Nr$r rsents rdemor.Msf  ?1$ FG ,nn\*GXg3Q7/4 i1chhtn--./r__main__)NNN)) r rr&rrr rr(r.__name__rrr3s? $0   / zFr