ó <¿CVc@sˆddlmZddlZddlZddlmZdddd„Zd„Zd„Z dZ dd „Z e d kr„e ƒndS( iÿÿÿÿ(tprint_functionN(t NonterminalcCsa|s|jƒ}n|dkr-tj}nt||g|ƒ}|r]tj||ƒ}n|S(sm 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(tstarttNonetsystmaxsizet _generate_allt itertoolstislice(tgrammarRtdepthtntiter((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/parse/generate.pytgenerates   ccs]|rTxPt||d|ƒD]0}x't||d|ƒD]}||Vq:WqWngVdS(Nii(t _generate_oneR(R titemsR tfrag1tfrag2((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/parse/generate.pyR's ccsv|dkrrt|tƒrgxQ|jd|ƒD]2}x)t||jƒ|dƒD] }|VqQWq.Wqr|gVndS(Nitlhsi(t isinstanceRt productionsRtrhs(R titemR tprodtfrag((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/parse/generate.pyR/s  #sš 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' icCs‡ddlm}td|fƒttƒ|jtƒ}xFtt|d|ƒdƒD])\}}td|dj|ƒfƒqVWdS(Niÿÿÿÿ(tCFGs3Generating the first %d sentences for demo grammar:R is%3d. %st (t nltk.grammarRtprintt demo_grammart fromstringt enumerateR tjoin(tNRR R tsent((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/parse/generate.pytdemoBs  (t__main__( t __future__RRRRRRR RRRR#t__name__(((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/parse/generate.pyt s