
    g                     ,    d dl Z d dlmZ  G d d      Zy)    N)
overriddenc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)ParserIa  
    A processing class for deriving trees that represent possible
    structures for a sequence of tokens.  These tree structures are
    known as "parses".  Typically, parsers are used to derive syntax
    trees for sentences.  But parsers can also be used to derive other
    kinds of tree structure, such as morphological trees and discourse
    structures.

    Subclasses must define:
      - at least one of: ``parse()``, ``parse_sents()``.

    Subclasses may define:
      - ``grammar()``
    c                     t               )z;
        :return: The grammar used by this parser.
        )NotImplementedError)selfs    C/var/www/openai/venv/lib/python3.12/site-packages/nltk/parse/api.pygrammarzParserI.grammar   s     "##    c                 N   t        | j                        r t         | j                  |gg|i |      S t        | j                        rd  | j                  |g|i |fD        S t        | j                        rt         | j                  |g|i |      S t               )a  
        :return: An iterator that generates parse trees for the sentence.
            When possible this list is sorted from most likely to least likely.

        :param sent: The sentence to be parsed
        :type sent: list(str)
        :rtype: iter(Tree)
        c              3   $   K   | ]  }|| 
 y wN ).0trees     r	   	<genexpr>z ParserI.parse.<locals>.<genexpr>1   s      CD# Cs   )r   parse_sentsnext	parse_one	parse_alliterr   r   sentargskwargss       r	   parsezParserI.parse%   s     d&&'((($A$A&ABB'+T^^DB4B6BC 
 't=d=f=>>%''r   c                 "      fd|D        S )zg
        Apply ``self.parse()`` to each element of ``sents``.
        :rtype: iter(iter(Tree))
        c              3   J   K   | ]  } j                   |gi   y wr   )r   )r   r   r   r   r   s     r	   r   z&ParserI.parse_sents.<locals>.<genexpr>@   s'     Ded


41$1&1es    #r   )r   sentsr   r   s   ` ``r	   r   zParserI.parse_sents;   s    
 EeDDr   c                 @    t         | j                  |g|i |      S )z:rtype: list(Tree))listr   r   s       r	   r   zParserI.parse_allB   s"    JDJJt5d5f566r   c                 B    t         | j                  |g|i |d      S )z:rtype: Tree or NoneN)r   r   r   s       r	   r   zParserI.parse_oneF   s$    JDJJt5d5f5t<<r   N)	__name__
__module____qualname____doc__r
   r   r   r   r   r   r   r	   r   r      s!    $(,E7=r   r   )	itertoolsnltk.internalsr   r   r   r   r	   <module>r)      s     %9= 9=r   