B
    ScY                 @   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   6lib/python3.7/site-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 )N)__next__)r   r   r   r   next   s    z
Lexer.nextc             C   s.   x(|   \}}}|tjhkr|||fS qW d S )N)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r6t || }|d |k rV||d  nd }|dkr|  jd7  _|  jd7  _| j| _	tj
d |fS |dkr|  j|dkrdnd7  _|  jd7  _| j| _	tj
d |fS |dkrN|  jd7  _| d | j| jk rD| j| j dkrD|  jd7  _tj||d | jd  |fS td||tjkr|  jd7  _|  tj ||| j }tj||fS |tjkr|  tj tjt||| j d|fS |d	kr|tjkr|  jd7  _|  tj tjt||| j d|fS td
| |d S )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   ,   sR    

 zLexer.next_c             C   s6   | j }x$|| jk r*| j| |kr*|d7 }qW || _ d S )Nr   )r   r   r   )r   Zvalidpr   r   r   r(   Y   s    zLexer.scan_over_c             C   s6   | j }x$|| jk r*| j| |kr*|d7 }qW || _ d S )Nr   )r   r   r   )r   Zstop_atr2   r   r   r   r+   _   s    zLexer.scan_until_N)__name__
__module____qualname__r   r   r   r   r)   ZCHAR_NEWLINE_r.   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      s,   
-r   N)ZfontTools.voltLib.errorr   objectr   r   r   r   r   <module>   s   