
    Pi^                       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          Z
d	ed
<   ddddddZded<    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 G d de          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+                    d, e
D                       z            fd- ej        d.ej                  fd/ ej        d0ej        ej        z            fgZd1ed2<   dBd7ZdCd9ZdDd;Z 	 	 	 	 dEdFdAZ!dS )Gz
babel.messages.jslexer
~~~~~~~~~~~~~~~~~~~~~~

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

:copyright: (c) 2013-2026 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                  .    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__     j/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/babel/messages/jslexer.pyr-   r-   %   s+         IIIJJJKKKKKr8   r-   z\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   c              #  >   K   | ]}t          j        |          V  d S )N)reescape).0ops     r9   	<genexpr>rF   9   s*      .Q.Qry}}.Q.Q.Q.Q.Q.Qr8   template_stringz`(?:[^`\\]*(?:\\.[^`\\]*)*)`stringzT(
        '(?:[^'\\]*(?:\\.[^'\\]*)*)'  |
        "(?:[^"\\]*(?:\\.[^"\\]*)*)"
    )(list[tuple[str | None, re.Pattern[str]]]_rulesjsxbooldottedreturnc                    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.
    rK   rG   r<   r=   )rJ   append)rK   rM   rG   rules
token_typerules         r9   	get_rulesrT   B   s     E" 	) 	)
D 	z 	ez&9&9 	:1B#B#B&& Jj$'((((Lr8   tokenc                <    | 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>   rH   regexp)r/   r0   )rU   s    r9   indicates_divisionrX   Z   s-     zZ{999:???r8   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   T\uU   N         xX )line_join_resubrP   findr+   uni_escape_rematchgrouplenchrr1   
ValueErrorendhex_escape_rejoin)rH   resultaddpos
escape_pos	next_charescapedescaped_values           r9   unquote_stringrw   c   s     fQi6":--&)v2E2E2E3 3F2EE 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776??s   &D- -
D:9D:r[   sourcer2   r1   Generator[Token, None, None]c              #  .  K   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 )aU  
    Tokenize JavaScript/JSX source.  Returns a generator of tokens.

    :param source: The JavaScript source to tokenize.
    :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   )rK   rM   rG   Nr@   rW   r[   )rj   rT   rh   division_reregex_reri   r-   rX   line_refindallrm   )rx   rK   rM   rG   r2   
may_dividerr   rm   rQ   rR   rS   rh   token_valuerU   s                 r9   tokenizer      s8       J
C
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 ))))))r8   )rK   rL   rM   rL   rG   rL   rN   rI   )rU   r-   rN   rL   )rH   r.   rN   r.   )TTTr[   )rx   r.   rK   rL   rM   rL   rG   rL   r2   r1   rN   ry   )"__doc__
__future__r   rB   collections.abcr   typingr   sortedrj   r    r6   r+   compileUNICODEname_redotted_name_rer{   DOTALLr|   r}   patternrd   rg   rn   r-   VERBOSEIro   rJ   rT   rX   rw   r   r7   r8   r9   <module>r      s9  	 	 	 # " " " " " 				 % % % % % %      v   
 D  	     !%4dDQQ Q Q Q Q
"*'
4
48"*EEbj  2:>	JJ
"*_
%
%rz%'/122
.//
.//    J    
:2:fbj))*	:2:i  !JBJw''(L"*ry2HIIJN#Wzrz 	
 *   

/667Gchh.Q.Qy.Q.Q.Q&Q&QQRRS

#F
SSTzrz 	 *ry
 " " #!4    .   0@ @ @ @A A A AL  1 1 1 1 1 1 1r8   