�
|�e� � �l � d Z ddlmZmZmZ ddlmZmZmZm Z m
Z
mZmZm
Z
ddlmZ dgZ G d� de� Zy)z�
pygments.lexers.tcl
~~~~~~~~~~~~~~~~~~~
Lexers for Tcl and related languages.
:copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
� )�
RegexLexer�include�words)�Text�Comment�Operator�Keyword�Name�String�Number�
Whitespace��shebang_matches�TclLexerc � � e Zd ZdZ eddd�� Z eddd�� ZdZdZdgZ d d
gZ
g d�Zd=d�Zi d
e
d� e
d� e
d� defg�d eee� �d eeed� �d eeed� �d eeed� �ddedfdedfdedfdej dfd ej$ fd!efg�dd"efd#ej* fd$ej, fd%ej. fd&ej0 fd'ej4 fd(ej4 fd)efg�d*d+ed,fd-ed,fd.ef e
d� e
d� g�d/ded0f e
d*� g�d1d2ed0f e
d*� g�d3d4ed0f e
d*� g�ddej d5fd6ej fdej d,fg�d5dej d5fd7ej fd4ej d,fg�dded,f e
d� e
d� e
d� g�dd2ed,f e
d� e
d� e
d� g�dd4ed,f e
d� e
d� e
d� g�d8d9ed,fd:efg�Zd;� Zy<)>r z:
For Tcl source code.
.. versionadded:: 0.10
)�after�apply�array�break�catch�continue�elseif�else�error�eval�expr�for�foreach�global�if� namespace�proc�rename�return�set�switch�then�trace�unset�update�uplevel�upvar�variable�vwait�whilez\b)�prefix�suffix)K�append�bgerror�binary�cd�chan�clock�close�concat�dde�dict�encoding�eof�exec�exit�fblocked�
fconfigure�fcopy�file� fileevent�flush�format�gets�glob�history�http�incr�info�interp�join�lappend�lassign�lindex�linsert�list�llength�load�loadTk�lrange�lrepeat�lreplace�lreverse�lsearch�lset�lsort�mathfunc�mathop�memory�msgcat�open�package�pidzpkg::create�pkg_mkIndex�platformzplatform::shell�puts�pwd� re_syntax�read�refchan�regexp�registry�regsub�scan�seek�socket�source�split�string�subst�tell�time�tm�unknown�unload�Tclz&https://www.tcl.tk/about/language.html�tclz*.tclz*.rvt)z
text/x-tclztext/x-script.tclzapplication/x-tclc � � | t d|z f|t j d|z fdt j d|z fdt dfgS )N�paramsz ([\w.-]+)�#�comment)r r
�Builtin�Variabler )�keyword_cmds_re�builtin_cmds_re�contexts �5/usr/lib/python3/dist-packages/pygments/lexers/tcl.py�_gen_command_ruleszTclLexer._gen_command_rules4 sK � �
�g�x�'�'9�:�
�d�l�l�H�w�,>�?�
�4�=�=�(�W�*<�=�
�7�I�&�
�
� �root�command�basic�dataz\}zcommand-in-bracez -in-bracezcommand-in-bracketz-in-bracketzcommand-in-parenz -in-parenz\(�parenz\[�bracketz\{�brace�"rt z(eq|ne|in|ni)\bz/!=|==|<<|>>|<=|>=|&&|\|\||\*\*|[-+~!*/%<>&^|?:]z\s+z0x[a-fA-F0-9]+z0[0-7]+z\d+\.\d+z\d+z
\$[\w.:-]+z\$\{[\w.:-]+\}z
[\w.,@:-]+r~ �;�#popz\nz(else|elseif|then)\bzparams-in-brace)r� r� zparams-in-parenz\)zparams-in-bracketz\]z
string-squarez(?s)(\\\\|\\[0-7]+|\\.|[^"\\])z$(?s)(\\\\|\\[0-7]+|\\.|\\\n|[^\]\\])r� z .*[^\\]\nz.*\\\nc � � t | d� S )Nz(tcl)r )�texts r� �analyse_textzTclLexer.analyse_text� s � ��t�X�.�.r� N)� )�__name__�
__module__�__qualname__�__doc__r r� r� �name�url�aliases� filenames� mimetypesr� r r r �Doubler �Wordr
r �Hex�Oct�Float�Integerr
r� r r �tokensr� � r� r� r r s� � �� � �
�u�.�O� � +� 49��H�O� �D�
2�C��g�G��'�"�I�H�I�
�V���I���G���F�O�
�G��
�V� �%�o��G�V� �.��/>�/:�<�V� �0��1@�1>�@�V� �.��/>�/:�<�V�" |