
    O&i                        d Z ddlmZ ddlZ eg ded          Zddd	d
ddZ ej        dej	                  Z
 ej        dej	                  Z ej        d          Z ej        dej                  Z ej        d          Z ej        dej        z             Z ej        d          Z ej        d          Z edd          Zd ej        dej	                  fd ej        d          fd ej        d          fd ej        dej	        ej        z            fdefde
fd ej        d ej                  fd! ej        d"ej                  fd# ej        d$d%                     eej        e                    z            fd& ej        d'ej	                  fd( ej        d)ej        ej        z            fgZd* Zd+ Zd, Zd.d-ZdS )/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}z[a-fA-F0-9]{1,2}Tokenztype 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|rd|v r|s|dk    r|dk    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         c/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/babel/messages/jslexer.py	get_rulesr;   :   s     E" 	) 	)
D 	z 	ez&9&9 	:1B#B#B&& Jj$'((((L    c                 <    | 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   )r,   r-   r1   regexp)typevalue)tokens    r:   indicates_divisionrB   N   s-     zZ{999:???r<   c                 v   | r| d         | d         k    r
| d         dv s
J d            t                               d| dd                   } g }|j        }d}	 |                     d|          }|dk     rn || ||                    | |dz            }|t          v r |t          |                    nD|dv rt
                              | |d	z             }||                                }t          |          dk    r=	  |t          t          |d                               |dz   }# t          $ r Y nw xY w |||z              |                                }
 ||           n|dv r}t                              | |d	z             }|Q|                                } |t          t          |d                               |d	z   t          |          z   } ||           n ||           |d	z   }|t          |           k     r || |d
                    d                    |          S )zUnquote 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   \uU   N         xX )line_join_resubr5   findescapesuni_escape_rematchgrouplenchrint
ValueErrorendhex_escape_rejoin)r1   resultaddpos
escape_pos	next_charescapedescaped_values           r:   unquote_stringrc   W   s     4fQi6":--&)v2E2E2E3 3F2E2EeVAbD\22FF
-C
C0[[s++
>>F3z>"### :>*	C	"#### $#))&*q.AAG" '}%%**!CM2 6 677888 )1n 	 &   
 I-...kkmmI $#))&*q.AAG" 'CM2..//000 1ns='9'99I C	NNN1na0d S[[F344L88Fs   &D- -
D:9D:c              #   2  K   d}d}d}t          |           }t          |||          }||k     r|D ]\  }	}
|
                    | |          }| nF |rt                              | |          }d}	nt                              | |          }d}	||dz  }m|                                }|	$t          |	||          }t          |          }|V  |t          t          	                    |                    z  }|
                                }||k     dS dS )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   rE   )r3   r6   r0   Nr/   r>   )rU   r;   rS   division_reregex_rerT   r(   rB   line_refindallrY   )sourcer3   r6   r0   
may_divider^   linenorY   r7   r8   r9   rS   token_valuerA   s                 r:   tokenizerm      s=      J
CF
f++C#foNNNE
)) % 	 	JJJvs++E  !  &#))&#66'

 vs33%
}qkkmm!*k6::E+E22JKKK#gook22333iikk9 ))))))r<   )TTT)__doc__collectionsr   resortedrU   	operatorsrQ   compileUNICODEname_redotted_name_rere   DOTALLrf   rg   patternrN   rR   rZ   r(   VERBOSEIr[   mapescaper4   r;   rB   rc   rm    r<   r:   <module>r~      s  	 	 # " " " " " 				F   
 D  	 4dD
A
A
"*'
4
48"*EEbj  2:>	JJ
"*_
%
%rz%'/122
.//
.//
7/00 
:2:fbj))*	:2:i  !JBJw''(L"*ry2HIIJN#Wzrz 	
 *   

/667Gchhss29i/H/H&I&IIJJK

#F
SSTzrz 	 *ry
 " " #!
.  (@ @ @@ @ @F* * * * * *r<   