o
    a‹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 )NFéa   é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ú-Fé0   é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