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

1		"::$ r6M  ((*1 r   c                 h   | j                         \  }}| j                  t        j                  t        j                  fv s| j
                  dv rb| j                         \  }}|j                  |       |}| j                  t        j                  t        j                  fv rS| j
                  dv rb||fS )N)([)_parse_itemr6   r	   r:   STRINGrE   r)   )r   r?   bcds        r   rD   zGrammarParser._parse_itemsT   s    !1ii,113C3J3JKK::+##%DAqIIaLA ii,113C3J3JKK::+
 !tr   c                 z   | j                   dk(  rX| j                          | j                         \  }}| j                  t        j
                  d       |j                  |       ||fS | j                         \  }}| j                   }|dvr||fS | j                          |j                  |       |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 IIaLa4K##%DAqJJEJ&!tNNIIaL|!t !tr   c                 
   | j                   dk(  rG| j                          | j                         \  }}| j                  t        j
                  d       ||fS | j                  t        j                  t        j                  fv rZt        | j                        }t        | j                        }|j                  || j                          | j                          ||fS | j                  d| j                  | j                          y )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a4KYY+002B2I2IJJ001A001AIIa$NNa4KK"ii5r   Nc                    | j                   |k7  r(| j                  d|| j                   | j                         |,| j                  |k7  r| j                  d|| j                         | 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   sn    998#TYY

<u!43UDJJG

r   c                 Z    t        | j                        }|\  | _        | _        | _        }y r   )r   r1   r6   rE   begin)r   tupprefixs      r   r2   zGrammarParser._gettoken   s$    4>>"471	4:tz6r   c           
      &   |r	 ||z  }| j                  j                         | j                  d   dz
     }t        |d| j                  d   | j                  d   |f      #  dj                  |gt        t        t        |            z         }Y xY w)N r      z	<grammar>)joinlistmapr    r0   
splitlinesr[   SyntaxError)r   msgargslines       r   rW   zGrammarParser._raise_error   s    =Dj   ++-djjma.?@#TZZ] $

1t 5 6 	6=hhutCTN';;<s   A   .Br   )r   r   r   __doc__r    r   r   r   r   rA   r=   rD   rK   rT   r9   r2   rW   r!   r   r   r,   r,   %   sQ    C xh&8 9: (	25$8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 * , /R RK K{6 {6r   