
    wdX&                        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 Zd	d
ej        fddd fddd f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% eD                         e                                d&  eed          D                        d'Z ej        d(                    d) eD                       ej                  Z ej        eej                  Z ej        dd*          Zd+ ZdS ),z"
Lexer for the datashape grammar.
    )absolute_importdivisionprint_functionN   )errorlexTokenc                 Z    t          j        d| z             j        d         j        j        S )Nur   )astparsebodyvalues)r   s    /lib/python3.11/site-packages/datashape/lexer.py_str_valr      s&     9S1W"1%+--    BOOLEANz
True|False
NAME_LOWERz[a-z][a-zA-Z0-9_]*c                     | S N xs    r   <lambda>r          Q r   
NAME_UPPERz[A-Z][a-zA-Z0-9_]*c                     | S r   r   r   s    r   r   r      r   r   
NAME_OTHERz_[a-zA-Z0-9_]*c                     | S r   r   r   s    r   r   r      s     r   )ASTERISKz\*)COMMA,)EQUAL=)COLON:)LBRACKETz\[)RBRACKETz\])LBRACEz\{)RBRACEz\})LPARENz\()RPARENz\))ELLIPSISz\.\.\.)RARROWz->)QUESTIONMARKz\?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              #   &   K   | ]}|d          V  dS r   Nr   .0toks     r   	<genexpr>r8   0   s&      ))#s1v))))))r   c              #   0   K   | ]\  }}|d          |fV  dS r4   r   )r6   ir7   s      r   r8   r8   1   s.      AAC#a&!AAAAAAr   z(?:\s|(?:#.*$))*|c              #   2   K   | ]}d |d         z   dz   V  dS )(r   )Nr   r5   s     r   r8   r8   7   s/       G Gs1v!3 G G G G G Gr   zid, name, span, valc              #     K   d}t                               | |          }|r|                                }|t          |           k     rt                              | |          }|r|j        }t          |dz
           }|d         }|                                }t          |          dk    r& |d         | |d         |d                            }nd}|                                }t          ||||          V  nt          j
        |d| d          t                               | |          }|r|                                }|t          |           k     dS 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   DataShapeSyntaxError)ds_strposmidtokinfonamerH   vals           r   r   r   =   ss      CVS))A eegg
F
 VS)) 	H Bb1foG1:D6688D7||a  gajQQ!899%%''CD$,,,,,,,S*-3-FH H H   -- 	%%''C/ F
     r   )__doc__
__future__r   r   r   rer   collections r   __all__r   literal_evalintrG   extendglobalsupdate	enumerate_whitespacecompilejoin	MULTILINErE   rA   
namedtupler	   r   r   r   r   <module>rb      s    A @ @ @ @ @ @ @ @ @ 				 



           '
. . . =#"23(,,7(,,7$ll3.4 R'2 ))))) ) ) ) 		  AA99Wa+@+@AAA A A A " RZ G Gw G G GGG& &
K66w(=>>) ) ) ) )r   