관리-도구
편집 파일: jslexer.cpython-39.pyc
a �`� � @ s� d Z ddlmZ ddlZddlmZ eg d�edd�Zdd d ddd �Z e� dej�Ze� dej�Z e� d�Ze� dej�Ze� d�Ze� dej �Ze� d�Zedd�Zde� dej�fde� d�fde� d�fde� dejejB �fde fdefde� d ej�fd!e� d"ej�fd#e� d$d%�eeje�� �fd&e� d'ej�fd(e� d)ejejB �fgZd*d+� Zd,d-� Zd.d/� Zd2d0d1�ZdS )3z� babel.messages.jslexer ~~~~~~~~~~~~~~~~~~~~~~ A simple JavaScript 1.5 lexer which is used for the JavaScript extractor. :copyright: (c) 2013-2021 by the Babel Team. :license: BSD, see LICENSE for more details. � )� namedtupleN)�unichr)+�+�-�*�%z!=z==�<�>z<=z>=�=z+=z-=z*=z%=z<<z>>z>>>z<<=z>>=z>>>=�&z&=�|z|=z&&z||�^z^=�(�)�[�]�{�}�!�--�++�~�,�;�.�:T)�key�reverse��� � � )�b�f�n�r�tz[\w$_][\w\d$_]*z[\w$_][\w\d$_.]*[\w\d$_.]z/=?z%/(?:[^/\\]*(?:\\.[^/\\]*)*)/[a-zA-Z]*z(\r\n|\n|\r)z\\z[a-fA-F0-9]{1,4}�Tokenztype value linenoz\s+z<!--.*Zlinecommentz//.*Zmultilinecommentz /\*.*?\*/�dotted_name�name�numberzb( (?:0|[1-9]\d*) (\.\d+)? ([eE][-+]?\d+)? | (0x[a-fA-F0-9]+) )Zjsx_tagz(?:</?[^>\s]+|/>)�operatorz(%s)r �template_stringz`(?:[^`\\]*(?:\\.[^`\\]*)*)`�stringzT( '(?:[^'\\]*(?:\\.[^'\\]*)*)' | "(?:[^"\\]*(?:\\.[^"\\]*)*)" )c C sV g }t D ]H\}}| s"|r"d|v r"q|s0|dkr0q|dkrB|s>qd}|�||f� q|S )ze Get a tokenization rule list given the passed syntax options. Internal to this module. �jsxr- r) r* )�_rules�append)r/ �dottedr- �rules� token_type�rule� r6 �:/usr/lib/python3.9/site-packages/babel/messages/jslexer.py� get_rules: s r8 c C s | j dkr| jdv S | j dv S )zzA helper function that helps the tokenizer to decide if the current token may be followed by a division operator. r, )r r r r r )r* r+ r. �regexp)�type�value)�tokenr6 r6 r7 �indicates_divisionN s r= c C s^ | r | d | d kr | d dv s(J d��t �d| dd� �} g }|j}d}| �d|�}|dk rb�q6|| ||� � | |d }|tv r�|t| � n�|dv �r$t�| |d �}|d u�r|�� }t|�dk�rz|t t |d��� W n ty� Y n0 |d }qJ||| � |�� }qJn||� n||� |d }qJ|t| �k �rT|| |d � � d� |�S )z�Unquote a string with JavaScript rules. The string has to start with string delimiters (``'``, ``"`` or the back-tick/grave accent (for template strings).) r ���z"'`z)string provided is not properly delimitedz\1� �\ZuU� N� � � � )�line_join_re�subr1 �find�escapes� uni_escape_re�match�group�lenr �int� ValueError�end�join)r. �result�add�posZ escape_posZ next_charZescapedZ escaped_valuer6 r6 r7 �unquote_stringW sD "� rU c c s� d}d}d}t | �}t|||d�}||k r�|D ] \} } | �| |�}|dur. q�q.|rft�| |�}d} nt�| |�}d} |du r�|d7 }q"|�� }| dur�t| ||�} t| �}| V |t t� |��7 }|� � }q"dS )z� Tokenize JavaScript/JSX source. Returns a generator of tokens. :param jsx: Enable (limited) JSX parsing. :param dotted: Read dotted names as single name token. :param template_string: Support ES6 template strings Fr r? )r/ r2 r- Nr, r9 )rM r8 rK �division_re�regex_rerL r( r= �line_re�findallrP )�sourcer/ r2 r- Z may_dividerT �linenorP r3 r4 r5 rK Ztoken_valuer<