a
    ƒ¼Df)  ã                   @   s   d Z ddlmZmZmZ ddlZddlZddlZddlm	Z	 ddgZ
dd	„ Zd
dejfdddd„ fdddd„ fdddd„ fddddddddddd d!d"d#d$efd%d&efgZe
 d'd(„ eD ƒ¡ eƒ  d)d(„ eedƒD ƒ¡ d*Ze d+ d,d(„ eD ƒ¡ej¡Ze eej¡Ze dd-¡Zd.d„ ZdS )/z"
Lexer for the datashape grammar.
é    )Úabsolute_importÚdivisionÚprint_functionNé   )ÚerrorÚlexÚTokenc                 C   s   t  d|  ¡jd jjS )NÚur   )ÚastÚparseÚbodyÚvalue)Ús© r   úg/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/datashader/datashape/lexer.pyÚ_str_val   s    r   ZBOOLEANz
True|FalseZ
NAME_LOWERz[a-z][a-zA-Z0-9_]*c                 C   s   | S ©Nr   ©Úxr   r   r   Ú<lambda>   ó    r   Z
NAME_UPPERz[A-Z][a-zA-Z0-9_]*c                 C   s   | S r   r   r   r   r   r   r      r   Z
NAME_OTHERz_[a-zA-Z0-9_]*c                 C   s   | S r   r   r   r   r   r   r      r   )ZASTERISKz\*)ÚCOMMAú,)ÚEQUALú=)ÚCOLONú:)ÚLBRACKETz\[)ÚRBRACKETz\])ÚLBRACEz\{)ÚRBRACEz\})ÚLPARENz\()ÚRPARENz\))ÚELLIPSISz\.\.\.)ÚRARROWz->)ZQUESTIONMARKz\?ZINTEGERz0(?![0-9])|-?[1-9][0-9]*ÚSTRINGzu(?:"(?:[^"\n\r\\]|(?:\\u[0-9a-fA-F]{4})|(?:\\["bfnrt]))*")|(?:'(?:[^'\n\r\\]|(?:\\u[0-9a-fA-F]{4})|(?:\\['bfnrt]))*')c                 c   s   | ]}|d  V  qdS ©r   Nr   ©Ú.0Útokr   r   r   Ú	<genexpr>0   r   r*   c                 c   s   | ]\}}|d  |fV  qdS r&   r   )r(   Úir)   r   r   r   r*   1   r   z(?:\s|(?:#.*$))*ú|c                 c   s   | ]}d |d  d V  qdS )ú(r   ú)Nr   r'   r   r   r   r*   7   r   zid, name, span, valc                 c   sÐ   d}t  | |¡}|r| ¡ }|t| ƒk rÌt | |¡}|r¢|j}t|d  }|d }| ¡ }t|ƒdkr„|d | |d |d … ƒ}nd}| ¡ }t||||ƒV  nt	 
|d| d¡‚t  | |¡}|r| ¡ }qdS )aG  A generator which lexes a datashape string into a
    sequence of tokens.

    Example
    -------

        import datashape
        s = '   -> ... A... "string" 1234 Blah _eil(# comment'
        print('lexing %r' % s)
        for tok in datashape.lexer.lex(s):
            print(tok.id, tok.name, tok.span, repr(tok.val))
    r   r   é   Nz<nofile>zInvalid DataShape token)Ú_whitespace_reÚmatchÚendÚlenÚ
_tokens_reÚ	lastindexÚ_tokensÚspanr   r   ZDataShapeSyntaxError)Zds_strÚposÚmÚidZtokinfoÚnamer7   Úvalr   r   r   r   =   s.    þ)Ú__doc__Ú
__future__r   r   r   Úrer
   ÚcollectionsÚ r   Ú__all__r   Úliteral_evalÚintr6   ÚextendÚglobalsÚupdateÚ	enumerateÚ_whitespaceÚcompileÚjoinÚ	MULTILINEr4   r0   Ú
namedtupler   r   r   r   r   r   Ú<module>   sL   
þíÿ