o
    aY                     @   s    d dl mZ G dd deZdS )    )VoltLibErrorc                   @   s   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZe
e e e Zee	 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )LexerNUMBERSTRINGNAMENEWLINEz 	z

0123456789ZABCDEFGHIJKLMNOPQRSTUVWXYZZabcdefghijklmnopqrstuvwxyz_.c                 C   s,   || _ d| _d| _d| _|| _t|| _d S )N   r   )	filename_line_pos_line_start_text_lentext_length_)selftextfilename r   9/usr/lib/python3/dist-packages/fontTools/voltLib/lexer.py__init__   s   zLexer.__init__c                 C   s   | S Nr   r   r   r   r   __iter__   s   zLexer.__iter__c                 C   s   |   S r   )__next__r   r   r   r   next   s   z
Lexer.nextc                 C   s(   	 |   \}}}|tjhvr|||fS qr   )next_r   r   )r   
token_typetokenlocationr   r   r   r   "   s
   
zLexer.__next__c                 C   s"   | j | j d }| jpd| j|fS )Nr   z<volt>)r   r   r   r   )r   columnr   r   r   	location_(   s   zLexer.location_c                 C   s  |  tj |  }| j}| j}t|}||krt || }|d |k r+||d  nd }|dkrI|  jd7  _|  jd7  _| j| _	tj
d |fS |dkrk|  j|dkrVdnd7  _|  jd7  _| j| _	tj
d |fS |dkr|  jd7  _| d | j| jk r| j| j dkr|  jd7  _tj||d | jd  |fS td||tjv r|  jd7  _|  tj ||| j }tj||fS |tjv r|  tj tjt||| j d|fS |d	kr|tjv r|  jd7  _|  tj tjt||| j d|fS td
| |)Nr   
   "z"
z Expected '"' to terminate string
   -zUnexpected character: '%s')
scan_over_r   CHAR_WHITESPACE_r#   r   r   r   StopIterationr   r   r   scan_until_r   r   r   CHAR_NAME_START_CHAR_NAME_CONTINUATION_r   CHAR_DIGIT_r   int)r   r!   startr   limitZcur_charZ	next_charr    r   r   r   r   ,   sV   


zLexer.next_c                 C   sH   | j }|| jk r| j| |v r|d7 }|| jk r| j| |v s|| _ d S Nr   r   r   r   )r   Zvalidpr   r   r   r*   Y   
   
zLexer.scan_over_c                 C   sH   | j }|| jk r| j| |vr|d7 }|| jk r| j| |vs|| _ d S r4   r5   )r   Zstop_atr6   r   r   r   r-   _   r7   zLexer.scan_until_N)__name__
__module____qualname__r   r   r   r   r+   ZCHAR_NEWLINE_r0   ZCHAR_UC_LETTER_ZCHAR_LC_LETTER_ZCHAR_UNDERSCORE_ZCHAR_PERIOD_r.   r/   r   r   r   r   r#   r   r*   r-   r   r   r   r   r      s0    
-r   N)ZfontTools.voltLib.errorr   objectr   r   r   r   r   <module>   s    