a
    ÇZEgñ  ã                   @  sâ  U d Z ddlmZ ddlZddlmZ ddlmZ eg d¢e	dd�Z
d	ed
< ddddddœZded< e dej¡Ze dej¡Ze d¡Ze dej¡Ze d¡Ze dej ¡Ze d¡Ze d¡ZG dd„ deƒZde dej¡fde d¡fde d ¡fd!e d"ejejB ¡fd#efd$efd%e d&ej¡fd'e d(ej¡fd)e d*d+ eeje
ƒ¡ ¡fd,e d-ej¡fd.e d/ejejB ¡fgZd0ed1< d2d2d2d0d3œd4d5„Z dd2d6œd7d8„Z!d9d9d:œd;d<„Z"dCd9d2d2d2d>d?d@œdAdB„Z#dS )Dzí
    babel.messages.jslexer
    ~~~~~~~~~~~~~~~~~~~~~~

    A simple JavaScript 1.5 lexer which is used for the JavaScript
    extractor.

    :copyright: (c) 2013-2024 by the Babel Team.
    :license: BSD, see LICENSE for more details.
é    )ÚannotationsN)Ú	Generator)Ú
NamedTuple)+ú+ú-Ú*ú%z!=z==ú<ú>z<=z>=ú=z+=z-=z*=z%=z<<z>>z>>>z<<=z>>=z>>>=ú&z&=ú|z|=z&&z||ú^z^=ú(ú)ú[ú]Ú{Ú}ú!ú--ú++ú~ú,ú;Ú.ú:T)ÚkeyÚreversez	list[str]Ú	operatorsúúÚ
úú	)ÚbÚfÚnÚrÚtzdict[str, str]Úescapesz[\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}z[a-fA-F0-9]{1,2}c                   @  s&   e Zd ZU ded< ded< ded< dS )ÚTokenÚstrÚtypeÚvalueÚintÚlinenoN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r5   r5   úO/var/www/sistema_ama/venv/lib/python3.9/site-packages/babel/messages/jslexer.pyr+   $   s   
r+   z\s+z<!--.*Zlinecommentz//.*Zmultilinecommentz	/\*.*?\*/Údotted_nameÚnameÚnumberzb(
        (?:0|[1-9]\d*)
        (\.\d+)?
        ([eE][-+]?\d+)? |
        (0x[a-fA-F0-9]+)
    )Zjsx_tagz(?:</?[^>\s]+|/>)Úoperatorz(%s)r   Útemplate_stringz`(?:[^`\\]*(?:\\.[^`\\]*)*)`ÚstringzT(
        '(?:[^'\\]*(?:\\.[^'\\]*)*)'  |
        "(?:[^"\\]*(?:\\.[^"\\]*)*)"
    )z(list[tuple[str | None, re.Pattern[str]]]Ú_rulesÚbool)ÚjsxÚdottedr;   Úreturnc                 C  sV   g }t D ]H\}}| s"|r"d|v r"q|s0|dkr0q|dkrB|s>qd}| ||f¡ q|S )ze
    Get a tokenization rule list given the passed syntax options.

    Internal to this module.
    r?   r;   r7   r8   )r=   Úappend)r?   r@   r;   ÚrulesÚ
token_typeÚruler5   r5   r6   Ú	get_rulesA   s    rF   )ÚtokenrA   c                 C  s   | j dkr| jdv S | j dv 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   )r8   r9   r<   Úregexp)r-   r.   )rG   r5   r5   r6   Úindicates_divisionU   s    

rI   r,   )r<   rA   c                 C  sº  | r | d | d kr | d dv s(J dƒ‚t  d| dd… ¡} g }|j}d}|  d|¡}|dk rb�q’|| ||… ƒ | |d  }|tv r”|t| ƒ nô|dv �r$t | |d	 ¡}|d
u�r| ¡ }t|ƒdk�rz|t	t
|dƒƒƒ W n työ   Y n0 |d }qJ||| ƒ | ¡ }qJn||ƒ nd|dv �r€t | |d	 ¡}|d
u�rv| ¡ }|t	t
|dƒƒƒ |d	 t|ƒ }qJn||ƒ n||ƒ |d	 }qJ|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).)
    r   éÿÿÿÿz"'`z)string provided is not properly delimitedz\1é   ú\ZuUé   Né   é   é   ÚxXÚ )Úline_join_reÚsubrB   Úfindr*   Úuni_escape_reÚmatchÚgroupÚlenÚchrr/   Ú
ValueErrorÚendÚhex_escape_reÚjoin)r<   ÚresultÚaddÚposZ
escape_posZ	next_charÚescapedZescaped_valuer5   r5   r6   Úunquote_string^   sT    "ÿ






rc   rK   r/   zGenerator[Token, None, None])Úsourcer?   r@   r;   r0   rA   c                 c  sÎ   d}d}t | ƒ}t|||d�}||k rÊ|D ] \}	}
|
 | |¡}|dur* q„q*|rbt | |¡}d}	nt | |¡}d}	|du r„|d7 }q| ¡ }|	dur®t|	||ƒ}t|ƒ}|V  |t t 	|¡ƒ7 }| 
¡ }qdS )a  
    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
    :param lineno: starting line number (optional)
    Fr   )r?   r@   r;   Nr:   rH   rK   )rY   rF   rW   Údivision_reÚregex_rerX   r+   rI   Úline_reÚfindallr\   )rd   r?   r@   r;   r0   Z
may_dividera   r\   rC   rD   rE   rW   Ztoken_valuerG   r5   r5   r6   Útokenize¡   s0    	ri   )TTTrK   )$Ú__doc__Ú
__future__r   ÚreÚcollections.abcr   Útypingr   ÚsortedrY   r   r4   r*   ÚcompileÚUNICODEZname_reZdotted_name_rere   ÚDOTALLrf   rg   ÚpatternrS   rV   r]   r+   ÚVERBOSEÚIr^   ÚmapÚescaper=   rF   rI   rc   ri   r5   r5   r5   r6   Ú<module>   sJ   
û



û
ýð	C