
    h7
                     ^    d dl mZ d dlZ	 d dlmZ  G d de      Zy# e$ r	 d dlmZ Y w xY w)    )print_functionN)StringIOc                   X    e Zd ZdZddddZddZd Zd Zd	 Zdd
Z	ddZ
d Zd Zd Zy)Lexer\
	)ntrc                 h   t        |d      r|| _        n_t        |      t        k(  rt	        |      | _        n<t        |      t
        k(  rt	        |j                               | _        nt        d      || _        t        j                         | _        | j                  | _        d| _        d| _        y )NreadzInvalid inputF)hasattrftypestrr   bytesdecode
ValueErrordebugcollectionsdequeqlexStartstateescapedeof)selfr   r   s      P/jellyfin/media/venv/lib/python3.12/site-packages/copyparty/stolen/dnslib/lex.py__init__zLexer.__init__   s    1fDF!W^a[DF!Wahhj)DF_--
""$]]
    c                 "    | j                         S N)parser   s    r    __iter__zLexer.__iter__!   s    zz|r"   c                 z    | j                   rt        d| j                         | j                         \  }| _        |S )NSTATE)r   printr   r   toks     r    
next_tokenzLexer.next_token$   s.    ::'4::& JJLdj
r"   c              #      K   | j                   >| j                  s1| j                         }|r| | j                   | j                  s/y y y y wr$   )r   r   r-   r+   s     r    r%   zLexer.parse*   sD     jj$TXX//#C	 jj$TXX$X$s   AA
Ac                 .   d}| j                   r9|dkD  r4|| j                   j                         z  }|dz  }| j                   r|dkD  r4|| j                  j                  |      z  }|dk(  rd| _        | j
                  rt        dt        |      z         |S )N r      Tz
Read: >%s<)r   popleftr   r   r   r   r*   repr)r   r   ss      r    r   z
Lexer.read0   s    ffQ!!AFA ffQ 	
TVV[[^7DH::,a()r"   c                    d}d}t        | j                        |kD  r?|dkD  r:|| j                  |   z  }|dz  }|dz  }t        | j                        |kD  r|dkD  r:| j                  j                  |      }|dkD  r|dk(  rd| _        | j                  j                  |       | j                  rt        dt        ||z         z         ||z   S )Nr0   r   r1   TzPeek : >%s<)	lenr   r   r   r   extendr   r*   r3   )r   r   r4   ir   s        r    peekz
Lexer.peek<   s    $&&kAo!a%NAFAFA $&&kAo!a% FFKKNq5Q"WDHa::-$q1u+-.1ur"   c                 r    t        j                  |      }|j                  | j                         || _        y r$   )r   r   r7   r   )r   r4   ps      r    pushbackzLexer.pushbackK   s)    a 	r"   c                 D   | j                  d      }|| j                  v rd| _        | j                  d      }|j	                         r@| j                  d      }| j
                  rt        d|z         t        t        |d            S |d   dv rC| j                  d      }| j
                  rt        d|z         t        t        |dd  d            S | j                  d      }| j
                  rt        d|z         | j                  j                  ||      S d	| _        |S )
Nr1   T   zEscape: >%s<   r   x   F)r   escape_charsr   r9   isdigitr   r*   chrintescapeget)r   cr   r@   s       r    readescapedzLexer.readescapedP   s    IIaL!!!DL		!Ayy{IIaL::.1,-3q!9~%1IIaL::.1,-3qub>**IIaL::.1,-{{q!,, DLHr"   c                      y)N)NN r&   s    r    r   zLexer.lexStarth   s    r"   N)F)r1   )__name__
__module____qualname__rB   rF   r!   r'   r-   r%   r   r9   r<   rI   r   rK   r"   r    r   r      s@    Ld.F

0r"   r   )
__future__r   r   r   ImportErrorioobjectr   rK   r"   r    <module>rS      s7    & !
\F \	  s    ,,