File: //lib/python3.9/site-packages/babel/messages/__pycache__/jslexer.cpython-39.opt-1.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 s0 t �d| dd� �} g }|j}d}| �d|�}|dk r:�q|| ||� � | |d }|tv rl|t| � n�|dv r�t�| |d �}|dur�|�� }t|�d kr�z|t t
|d
��� W n ty� Y n0 |d }q"||| � |�� }q"q�||� n||� |d }q"|t| �k �r&|| |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).)
z\1� ���r �\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 s>