o
    @j!                     @   sV   d dl mZmZ d dlmZ ddlmZ G dd dZdZdZ	d	Z
G d
d deZdS )    )CallableUnion)Literal   )
ParseErrorc                   @   s   e Zd ZdefddZdedeedf fddZdedeedf fd	d
Ze	deedf fddZ
e	deedf fddZdeedf fddZdeedf fddZddeddfddZdddZdS )ParserStreamstringc                 C   s   || _ d| _d| _d S Nr   )r   indexpeek_offset)selfr    r   c/var/www/www-root/data/www/ai-bot.pdev.uz/venv/lib/python3.10/site-packages/fluent/syntax/stream.py__init__   s   
zParserStream.__init__offsetreturnNc                 C   s"   z| j | W S  ty   Y d S w N)r   
IndexErrorr   r   r   r   r   get   s
   zParserStream.getc                 C   s.   |  |dkr|  |d dkrdS |  |S Nr   
)r   r   r   r   r   char_at   s   
zParserStream.char_atc                 C      |  | jS r   )r   r
   r   r   r   r   current_char   s   zParserStream.current_charc                 C   s   |  | j| j S r   )r   r
   r   r   r   r   r   current_peek!   s   zParserStream.current_peekc                 C   sR   d| _ | | jdkr| | jd dkr|  jd7  _|  jd7  _| | jS )Nr   r   r   r   )r   r   r
   r   r   r   r   next%   s   zParserStream.nextc                 C   s^   |  | j| j dkr|  | j| j d dkr|  jd7  _|  jd7  _|  | j| j S r   )r   r
   r   r   r   r   r   peek.   s
   zParserStream.peekr   c                 C   s
   || _ d S r   )r   r   r   r   r   
reset_peek6      
zParserStream.reset_peekc                 C   s   |  j | j7  _ d| _d S r	   )r
   r   r   r   r   r   skip_to_peek9   s   
zParserStream.skip_to_peek)r   r   N)__name__
__module____qualname__strr   intr   r   r   propertyr   r   r   r   r    r"   r   r   r   r   r      s    	r   r   N)}.[*c                   @   s  e Zd ZdefddZdefddZdefddZdefdd	Zd8ddZd8ddZ	dede
d fddZde
d fddZdeegef deee
d d
f fddZdeed
f defddZdefddZdefddZdeed
f defdd Zdefd!d"Zdefd#d$Zd9d&edefd'd(Zdefd)d*Zdefd+d,Zd-edd
fd.d/Zdeed
f fd0d1Zdeee
d d
f fd2d3Zdeee
d d
f fd4d5Zdeee
d d
f fd6d7Zd
S ):FluentParserStreamr   c                 C   s>   | j | j }| jdkr|   | jdks| j|| j | j  S N )r
   r   r   r   r   )r   startr   r   r   peek_blank_inlineE   s
   

z$FluentParserStream.peek_blank_inlinec                 C      |   }|   |S r   )r2   r"   r   blankr   r   r   skip_blank_inlineK      z$FluentParserStream.skip_blank_inlinec                 C   sL   d}	 | j }|   | jtkr|t7 }|   q| jtu r|S | | |S )N )r   r2   r   EOLr   EOFr    )r   r5   
line_startr   r   r   peek_blank_blockP   s   


z#FluentParserStream.peek_blank_blockc                 C   r3   r   )r<   r"   r4   r   r   r   skip_blank_blockc   r7   z#FluentParserStream.skip_blank_blockNc                 C   s,   | j dtfv r|   | j dtfv sd S d S r/   )r   r9   r   r   r   r   r   
peek_blankh   s   zFluentParserStream.peek_blankc                 C   s   |    |   d S r   )r>   r"   r   r   r   r   
skip_blankl   s   zFluentParserStream.skip_blankchTc                 C   s    | j |kr|   dS td|)NTE0003)r   r   r   r   r@   r   r   r   expect_charp   s   

zFluentParserStream.expect_charc                 C   s.   | j tu rdS | j tkr|   dS tdd)NTrA   u   ␤)r   r:   r9   r   r   r   r   r   r   expect_line_endw   s   


z"FluentParserStream.expect_line_endfFc                 C   s*   | j }|d u r	tS ||r|   |S dS NF)r   r:   r   )r   rE   r@   r   r   r   	take_char   s   zFluentParserStream.take_charc                 C   s4   |d u rdS t |}|dkr|dkp|dko|dkS )NFa   z   A   Z   ord)r   r@   ccr   r   r   is_char_id_start   s   z#FluentParserStream.is_char_id_startc                 C   r   r   )rO   r   r   r   r   r   is_identifier_start   s   z&FluentParserStream.is_identifier_startc                 C   sP   | j dkr	|  n| j }|d u r|   dS t|}|dko!|dk}|   |S )N-F0   9   )r   r   r    rM   )r   r@   rN   is_digitr   r   r   is_number_start   s   z"FluentParserStream.is_number_startc                 C   s   |t u rdS |tvS rF   )r:   SPECIAL_LINE_START_CHARSrB   r   r   r   is_char_pattern_continuation   s   z/FluentParserStream.is_char_pattern_continuationc                 C   s   | j tuo	| j tkS r   )r   r:   r9   r   r   r   r   is_value_start   s   z!FluentParserStream.is_value_startc                 C   sV   | j }|   | jdkr| | dS | j | dkrdS | | jr)| | dS dS )N{Tr   F)r   r2   r   r    rW   )r   column1r   r   r   is_value_continuation   s   


z(FluentParserStream.is_value_continuationlevelc                 C   s   | j tkrdS d}||ks|dkr:|dk r:|  dkr*||kr)|dkr)|   dS n|d7 }||ks|dkr:|dk s|  dtfv rH|   dS |   dS )	NFr   r\      #r   r0   T)r   r9   r   r    )r   r]   ir   r   r   is_next_line_comment   s    
	z'FluentParserStream.is_next_line_commentc                 C   sJ   | j }| jdkr|   | jdkr|  dkr| | dS | | dS )Nr-   r,   TF)r   r   r   r    )r   current_peek_offsetr   r   r   is_variant_start   s   


z#FluentParserStream.is_variant_startc                 C   s
   | j dkS )Nr+   )r   r   r   r   r   is_attribute_start   r!   z%FluentParserStream.is_attribute_start
junk_startc                 C   s   | j td| j}||k r|| _| jrK| jtkr|   q|  }| |s.|dks.|dkr0d S |  }|   ||fdksD||fdkrFd S | jsd S d S )Nr   rQ   r_   )/rf   )r,   r,   )	r   rfindr9   r
   r   r   rO   r   r    )r   re   last_newlinefirstr   r   r   r   skip_to_next_entry_start   s   
z+FluentParserStream.skip_to_next_entry_startc                 C   s(   |  | jr| j}|   |S tdd)NE0004za-zA-Z)rO   r   r   r   )r   retr   r   r   take_id_start   s
   
z FluentParserStream.take_id_startc                 C      dt dtfdd}| |S )Nr@   r   c                 S   sH   t | }|dkr|dkp#|dko|dkp#|dko|dkp#|dkp#|dkS )	NrH   rI   rJ   rK   rR   rS   _   -   rL   r@   rN   r   r   r   closure  s   z0FluentParserStream.take_id_char.<locals>.closurer'   boolrG   r   rr   r   r   r   take_id_char     
zFluentParserStream.take_id_charc                 C   rn   )Nr@   r   c                 S   s   t | }|dko|dkS )NrR   rS   rL   rq   r   r   r   rr     s   z.FluentParserStream.take_digit.<locals>.closurers   ru   r   r   r   
take_digit  s   
zFluentParserStream.take_digitc                 C   rn   )Nr@   r   c                 S   s8   t | }|dkr|dkp|dko|dkp|dko|dkS )NrR   rS   rJ   F   rH   f   rL   rq   r   r   r   rr     s   z2FluentParserStream.take_hex_digit.<locals>.closurers   ru   r   r   r   take_hex_digit  rw   z!FluentParserStream.take_hex_digitr#   )r\   ) r$   r%   r&   r'   r2   r6   r<   r=   r>   r?   r   rC   rD   r   rt   r   rG   rO   rP   rU   rW   rX   r[   r(   ra   rc   rd   rj   rm   rv   rx   r{   r   r   r   r   r.   C   s0    

*		 r.   )typingr   r   typing_extensionsr   errorsr   r   r9   r:   rV   r.   r   r   r   r   <module>   s    8