�
ƪb� � � � d Z ddlmZ ddlZ eg d�ed�� � Zddd d
dd�Z ej d
ej � � Z
ej dej � � Z ej d� � Z ej dej
� � Z ej d� � Z ej dej z � � Z ej d� � Z edd� � Zd ej dej � � fd ej d� � fd ej d� � fd ej dej ej
z � � fdefde
fd ej dej � � fd ej d!ej � � fd" ej d#d$� eej e� � � � z � � fd% ej d&ej � � fd' ej d(ej ej
z � � fgZd)� Zd*� Zd+� Zd-d,�ZdS ).z�
babel.messages.jslexer
~~~~~~~~~~~~~~~~~~~~~~
A simple JavaScript 1.5 lexer which is used for the JavaScript
extractor.
:copyright: (c) 2013-2022 by the Babel Team.
:license: BSD, see LICENSE for more details.
� )�
namedtupleN)+�+�-�*�%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<!--.*�linecommentz//.*�multilinecommentz /\*.*?\*/�dotted_name�name�numberzb(
(?:0|[1-9]\d*)
(\.\d+)?
([eE][-+]?\d+)? |
(0x[a-fA-F0-9]+)
)�jsx_tagz(?:</?[^>\s]+|/>)�operatorz(%s)r �template_stringz`(?:[^`\\]*(?:\\.[^`\\]*)*)`�stringzT(
'(?:[^'\\]*(?:\\.[^'\\]*)*)' |
"(?:[^"\\]*(?:\\.[^"\\]*)*)"
)c � � g }t D ]9\ }}| s|rd|v r�|s|dk r�|dk r|s� d}|� ||f� � �:|S )ze
Get a tokenization rule list given the passed syntax options.
Internal to this module.
�jsxr0 r+ r, )�_rules�append)r3 �dottedr0 �rules�
token_type�rules �8/usr/lib/python3/dist-packages/babel/messages/jslexer.py� get_rulesr; 8 s� � �
�E�"� )� )��
�D�� �z� �e�z�&9�&9��� �:�1B�#B�#B����&�&��
���J�
���j�$�'�(�(�(�(��L� c �< |