
    Mh                         d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
  G d d          Z G d d          Z G d	 d
          ZdS )    )OptionalIteratorTupleList)tokenize)parse_version_string)PythonTokenTypesc                   0    e Zd Zdddee         fdZd ZdS )NFAArcnext_NFAStatenonterminal_or_stringc                 "    || _         || _        d S N)nextr   selfr   r   s      Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/parso/pgen2/grammar_parser.py__init__zNFAArc.__init__   s    #	4I"""    c                 2    d| j         j        d| j        dS )N<z: >)	__class____name__r   r   s    r   __repr__zNFAArc.__repr__   s#     !^444d6P6P6PQQr   N)r   
__module____qualname__r   strr   r    r   r   r   r      sT        Jj J# J J J JR R R R Rr   r   c                   (    e Zd ZdefdZddZd ZdS )r   	from_rulec                 "    || _         g | _        d S r   )r#   arcs)r   r#   s     r   r   zNFAState.__init__   s    '"$			r   Nc                     |t          |t                    sJ t          |t                    sJ | j                            t          ||                     d S r   )
isinstancer    r   r%   appendr   r   s      r   add_arczNFAState.add_arc   s\    $,
;PRU0V0V,,,%*****	'<==>>>>>r   c                 2    d| j         j        d| j        dS )Nr   z: from r   )r   r   r#   r   s    r   r   zNFAState.__repr__!   s      "&."9"9"94>>>JJr   r   )r   r   r   r    r   r)   r   r!   r   r   r   r      sW        %# % % % %? ? ? ?
K K K K Kr   r   c                   r    e Zd ZdZdefdZdeeeef                  fdZ	d Z
d Zd Zd	 ZddZd Zd Zd
S )GrammarParserz.
    The parser for Python grammar files.
    bnf_grammarc                     || _         t          |t          d                    | _        |                                  d S )Nz3.9)version_info)_bnf_grammarr   r   	generator	_gettoken)r   r-   s     r   r   zGrammarParser.__init__)   sF    '!-e44
 
 
 	r   returnc              #     K   | j         t          j        k    r| j         t          j        k    r)|                                  | j         t          j        k    )|                     t          j                  | _        |                     t          j        d           | 	                                \  }}|                     t          j                   ||fV  | j         t          j        k    d S d S )N:)
typer	   	ENDMARKERNEWLINEr2   _expectNAME_current_rule_nameOP
_parse_rhsr   azs      r   parsezGrammarParser.parse1   s      i+555)/777    )/777 '+ll3C3H&I&ID#LL),c222??$$DAqLL)1222Q$JJJ i+5555555r   c                 l   |                                  \  }}| j        dk    r||fS t          | j                  }t          | j                  }	 |                    |           |                    |           | j        dk    rn,|                                  |                                  \  }}b||fS )N|)_parse_itemsvaluer   r;   r)   r2   )r   r?   r@   aazzs        r   r=   zGrammarParser._parse_rhs@   s      ""1:a4K$122B$122B	+ 

1		":$$   ((**1	+ r6Mr   c                 4   |                                  \  }}| j        t          j        t          j        fv s	| j        dv rV|                                  \  }}|                    |           |}| j        t          j        t          j        fv M| j        dv V||fS )N)([)_parse_itemr6   r	   r:   STRINGrE   r)   )r   r?   bcds        r   rD   zGrammarParser._parse_itemsT   s    !!1i,13C3JKKK:++##%%DAqIIaLLLA i,13C3JKKK:++
 !tr   c                    | j         dk    rd|                                  |                                 \  }}|                     t          j        d           |                    |           ||fS |                                 \  }}| j         }|dvr||fS |                                  |                    |           |dk    r||fS ||fS )NrJ   ])+*rR   )rE   r2   r=   r9   r	   r<   r)   _parse_atom)r   r?   r@   rE   s       r   rK   zGrammarParser._parse_item_   s    :NN??$$DAqLL),c222 IIaLLLa4K##%%DAqJEJ&&!tNNIIaLLL||!t !tr   c                    | j         dk    rO|                                  |                                 \  }}|                     t          j        d           ||fS | j        t          j        t          j        fv r[t          | j
                  }t          | j
                  }|                    || j                    |                                  ||fS |                     d| j        | j                    d S )NrI   )z+expected (...) or NAME or STRING, got %s/%s)rE   r2   r=   r9   r	   r<   r6   r:   rL   r   r;   r)   _raise_errorr>   s      r   rT   zGrammarParser._parse_atomx   s    :NN??$$DAqLL),c222a4KY+02B2IJJJ011A011AIIa$$$NNa4KK"i5 5 5 5 5r   Nc                     | j         |k    r"|                     d|| j         | j                   |'| j        |k    r|                     d|| j                   | j        }|                                  |S )Nzexpected %s, got %s [%s]zexpected %s, got %s)r6   rW   rE   r2   )r   type_rE   s      r   r9   zGrammarParser._expect   s~    98#TY
< < <u!4!43UDJGGG
r   c                 Z    t          | j                  }|\  | _        | _        | _        }d S r   )r   r1   r6   rE   begin)r   tupprefixs      r   r2   zGrammarParser._gettoken   s)    4>""471	4:tz666r   c           
      B   |rG	 ||z  }n@#  d                     |gt          t          t          |                    z             }Y nxY w| j                                        | j        d         dz
           }t          |d| j        d         | j        d         |f          )N r      z	<grammar>)joinlistmapr    r0   
splitlinesr[   SyntaxError)r   msgargslines       r   rW   zGrammarParser._raise_error   s     	==Dj=hhutCTNN';';;<< ++--djma.?@#TZ] $
1t 5 6 6 	6s	   
 ;Ar   )r   r   r   __doc__r    r   r   r   r   rA   r=   rD   rK   rT   r9   r2   rW   r!   r   r   r,   r,   %   s         C    xh&8 9:      (	 	 	  25 5 5$   8 8 86 6 6 6 6r   r,   N)typingr   r   r   r   parso.python.tokenizer   parso.utilsr   parso.python.tokenr	   r   r   r,   r!   r   r   <module>rn      s    3 2 2 2 2 2 2 2 2 2 2 2 * * * * * * , , , , , , / / / / / /R R R R R R R RK K K K K K K K{6 {6 {6 {6 {6 {6 {6 {6 {6 {6r   