U
    dRfE                     @   s   d dl mZ ddlmZ dZdZdZdeedd	 e Z	d
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d Zdd Zdd  Zd!d" Zd#d$ Zd%S )&    )absolute_import   )ThriftLexerErrorz:;,=*{}()<>[])hZBEGINZENDZ	__CLASS__Z__DIR__Z__FILE__Z__FUNCTION__Z__LINE__Z
__METHOD__Z__NAMESPACE__ZabstractaliasandargsasassertbeginbreakZcaseZcatchclassclonecontinueZdeclaredefdefaultdeldeleteZdoZdynamicelifelseZelseifZelsifendZ
enddeclareZendforZ
endforeachendifZ	endswitchZendwhileZensureexceptexecfinallyfloatforZforeachfromfunctionglobalgotoifZ
implementsimportininlineZ
instanceofZ	interfaceislambdamoduleZnativenewnextnilnotorpasspublicprintprivateZ	protectedr-   raiseZredoZrescueretryregisterreturnselfsizeofZstaticsuperswitchZsynchronizedZthenthisthrowZ	transienttryZundefunionZunlessZunsignedZuntilZusevarZvirtualZvolatilewhenwhilewithxoryield)	namespaceincludeZcpp_includevoidboolbytei8Zi16Zi32Zi64doublestringbinarymaplistsetZonewayZtypedefstructr;   	exceptionZextendsZthrowsZserviceenumconstrequiredoptional)ZBOOLCONSTANTINTCONSTANTZDUBCONSTANTLITERAL
IDENTIFIERc                 C   s   |   S )N)upper)kw rY   :/tmp/pip-unpacked-wheel-jqs7l_7o/thriftpy2/parser/lexer.py<lambda>       r[   z 	c                 C   s   t d| jd | jf d S )NzIllegal character %r at line %dr   )r   valuelinenotrY   rY   rZ   t_error   s    ra   c                 C   s   | j  jt| j7  _dS )z\n+N)lexerr^   lenr]   r_   rY   rY   rZ   	t_newline   s    rd   c                 C   s   | j  j| jd7  _dS )z\/\*\**\*\/
Nrb   r^   r]   countr_   rY   rY   rZ   t_ignore_SILLYCOMM   s    rh   c                 C   s   | j  j| jd7  _dS )z(\/\*[^*]\/*([^*/]|[^*]\/|\*[^/])*\**\*\/re   Nrf   r_   rY   rY   rZ   t_ignore_MULTICOMM   s    ri   c                 C   s   | j  j| jd7  _dS )z#\/\*\*([^*/]|[^*]\/|\*[^/])*\**\*\/re   Nrf   r_   rY   rY   rZ   t_ignore_DOCTEXT   s    rj   c                 C   s   dS )z\#[^\n]*NrY   r_   rY   rY   rZ   t_ignore_UNIXCOMMENT   s    rk   c                 C   s   dS )z
\/\/[^\n]*NrY   r_   rY   rY   rZ   t_ignore_COMMENT   s    rl   c                 C   s   | j dk| _ | S )z\btrue\b|\bfalse\btrue)r]   r_   rY   rY   rZ   t_BOOLCONSTANT   s    rn   c                 C   s   t | j| _| S )z6[+-]?((\d+(?=\.|[Ee])(\.\d*)?)|(\.\d+))([Ee][+-]?\d+)?)r   r]   r_   rY   rY   rZ   t_DUBCONSTANT   s    ro   c                 C   s   t | jd| _d| _| S )z0x[0-9A-Fa-f]+   rT   )intr]   typer_   rY   rY   rZ   t_HEXCONSTANT   s    rs   c                 C   s   t | j| _| S )z[+-]?[0-9]+)rq   r]   r_   rY   rY   rZ   t_INTCONSTANT   s    rt   c                 C   s   | j dd }ddddddd	}d
}t|}d}||k r|| dkr|d7 }|| |krj||||  7 }qd||  }t|n||| 7 }|d7 }q0|| _ | S )z-(\"([^\\\n]|(\\.))*?\")|\'([^\\\n]|(\\.))*?\'r   	re   \'")r`   rnrx   ry   rz   r    z!Unexpected escaping character: %s)r]   rc   r   )r`   smapsilengthvalmsgrY   rY   rZ   	t_LITERAL   s,    

r   c                 C   s<   | j tkr| j  | _| S | j tkr8td| j | jf | S )z'[a-zA-Z_](\.[a-zA-Z_0-9]|[a-zA-Z_0-9])*z3Cannot use reserved language keyword: %r at line %d)r]   keywordsrW   rr   thrift_reserved_keywordsr   r^   r_   rY   rY   rZ   t_IDENTIFIER   s    


r   N)
__future__r   excr   literalsr   r   tuplerK   tokensZt_ignorera   rd   rh   ri   rj   rk   rl   rn   ro   rs   rt   r   r   rY   rY   rY   rZ   <module>   s*   l 	