�
ƪ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$j- eej0 e� � z � fd% ej d&ej � fd' ej d(ej( ej z � fgZd)� Zd*� Zd+� Zd-d,�Zy).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 ]3 \ }}| s|rd|v r�|s|dk( r�|dk( r|s�d}|j ||f� �5 |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 se � �
�E�"� )��
�D��z�e�z�&9���:�1B�#B����&����J�
���j�$�'�(� )� �L� c �X � | j dk( r| j dv 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- r1 �regexp)�type�value)�tokens r: �indicates_divisionrB L s0 � �
�z�z�Z���{�{�9�9�9��:�:�?�?�?r< |