HEX
Server: Apache/2.4.67 (Debian)
System: Linux vps-b2547eb4 6.1.0-41-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.158-1 (2025-11-09) x86_64
User: root (0)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/pygments/lexers/__pycache__/crystal.cpython-311.pyc
�

�E�c�=���dZddlZddlmZmZmZmZmZmZddl	m
Z
mZmZm
Z
mZmZmZmZmZdgZgd�ZGd�de��ZdS)z�
    pygments.lexers.crystal
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexer for Crystal.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�N)�ExtendedRegexLexer�include�bygroups�default�words�line_re)	�Comment�Operator�Keyword�Name�String�Number�Punctuation�Error�
Whitespace�CrystalLexer)z!=z!~�!�%z&&�&z**�*�+�-�/z<=>z<<z<=�<z===z==z=~�=z>=z>>�>z[]=z[]?z[]�^z||�|�~c��eZdZdZdZdZddgZdgZdgZe	j
e	jzZd�Z
d	�Zgd
ejf�ed���d�
��ef�ed���dd���ejf�dejf�egd�d�
��ejf�deeeej��f�deeeej��df�dedf�deeeej��df�ed���dd���ejf�dejjf�ed���dd���ejf�dejjf�de
f�de
f�dejd f�d!eeej��d"f�d#ejd"f�d$eeej��d"f�d%eejee ��f�d&eej!ee ��f�d'eej"ee ��f�d(eej#ee ��f�d)eej#ee ��f�d*eej#ee ��f�d+eej$ee ��f�d,ej%j&f�d-ej%j'f�d.ej%j(f�d/ej%j(f�d0ej%j(f�d1e f�e)d2���d3ej*f�d4ejf�d5ej+d6f�d7ej+d8f�d9ee eej,��d:f�ee-d;�<��ee ej ��f�d=ee e��f�d>ef�d?e f�d@e f�dAe.f�dBef�dCeej&e ej/��dDfe0dD��gdEej&fdFee.eej&ee.��fe0dD��gdGej+dHfdIej+dDfe)dJ��gdKej+dLfgdMej1fge)dN��e)dO��ge)dN��dPejfdQejfge)dN��dPej2fdQej2fge)dN��dRejfdSejfdPejfdTejfdUejdDfgdVejdDfgd5ej+dHfdWej+dDfdXefe)dJ��gd7ej+dHfdYej+dDfe)dJ��gdZe dHfd[e dDfe)dJ��gd\�Z3e3�4e����d]S)^rz=
    For Crystal source code.

    .. versionadded:: 2.2
    �Crystalzhttp://crystal-lang.org�cr�crystalz*.crztext/x-crystalc#��K�|�d��}|t|�d��fV�|�d��tj|�d��fV�|�d��tj|�d��fV�|�d��tj|�d��fV�|j�dg��}t|��}|�	|�d��dk|�d��f��|�d��|_
|�d��|_t|��dkr|�
|�	��Ed{V��n)|j
tj|�d��fV�|���|_
|�rw|D�]S\}}g}tj|j|j
��D]�}|r'|������}	n&|������}	|	|kr�|D]7}
|
���tj|
���fV��8|���tj|���fV�|���|_
nK|�	|����|D]2}
|
���t&|
���fV��3��Ut|j��|_|dd�=dSdS)
N�����heredocstackz<<-��d)�context)�startr
�groupr
�Heredoc�	Delimiter�__dict__�
setdefault�bool�append�pos�end�len�get_tokens_unprocessedr�finditer�text�strip�rstripr)�self�match�ctxr-r)�	outermost�tolerant�hdname�lines�check�amatchs           �9/usr/lib/python3/dist-packages/pygments/lexers/crystal.py�heredoc_callbackzCrystalLexer.heredoc_callback*s�������A�����X�u�{�{�1�~�~�-�-�-�-��k�k�!�n�n�f�n�e�k�k�!�n�n�<�<�<�<��k�k�!�n�n�f�.����A���>�>�>�>��k�k�!�n�n�f�n�e�k�k�!�n�n�<�<�<�<��|�.�.�~�r�B�B���\�*�*�*�	����U�[�[��^�^�u�4�e�k�k�!�n�n�E�F�F�F��+�+�a�.�.����)�)�A�,�,����|���s�"�"��2�2�3�2�?�?�?�?�?�?�?�?�?�?��'�6�>�5�;�;�q�>�>�9�9�9�9��)�)�+�+����	 �$0�
D�
D� ��&���$�-�c�h���@�@�D�D�E��7� %���
�
� 3� 3� 5� 5��� %���
�
� 4� 4� 6� 6������&+�Q�Q�F�"(�,�,�.�.�&�.�&�,�,�.�.�"P�P�P�P�P�#�k�k�m�m�V�-=�u�{�{�}�}�L�L�L�L�"'�)�)�+�+��������U�+�+�+�+�#(�D�D��$�l�l�n�n�e�V�\�\�^�^�C�C�C�C�C���#�(�m�m�C�G��Q�Q�Q����-	 �	 �c
���i}dtjfttd���tjfdtjfdtjfdtjdfdttjt��fd	tjd
fdtjdfg|d
<dtjd	fdtjd	fdtjdffD]1\}}}t|dkrdnd��d|z|fd|f||dfg|d|z<�2dD�]�\}}}}d|ztj
fg||k|tj
dfgzz|tj
dftd��d|zdztj
fd|zdztj
fgz||dz<|d
�d |ztj
|dzf��d!|zdztj
fg||k|tj
dfgzz|tj
dfd|zdztj
fd|zdztj
fgz||d"z<|d
�d#|ztj
|d"zf��d!|zdztjfg||k|tjdfgzz|d$ztjdftd%��d|zdztjfd|zdztjfgz||d&z<|d
�d'|ztj|d&zf�����|S)(Nz
\:\w+[!?]?z\:��prefixz:'(\\\\|\\[^\\]|[^'\\])*'z'(\\\\|\\'|[^']|\\[^'\\]+)'z:"z
simple-symz([a-zA-Z_]\w*)(:)(?!:)�"z
simple-stringz(?<!\.)`zsimple-backtick�strings�string�sym�backtick�`�string-escaped�string-intp-escapedz	[^\\%s#]+�[\\#]�#popzsimple-))�\{�\}z{}�cb)�\[�\]z\[\]�sb)z\(z\)z()�pa)rrz<>�ab)�\|r^r^�piz\\�#pushz[\\#�]z[^\\#z]+z-intp-stringz%Q?z\\[\\z-stringz%[qwi]z[imsx]*�string-intpz-regexz%r)
r
�Symbolr�CRYSTAL_OPERATORS�Charrr�Double�Backtickr�Otherr4�Regex)�states�name�ttyper6�lbrace�rbrace�braceccs       rF�gen_crystalstrings_rulesz%CrystalLexer.gen_crystalstrings_rulesYs�����
�F�M�*�
�$�U�
3�
3�
3�V�]�C�
)�6�=�9�
+�V�[�9�
�F�M�<�0�
&�����(L�(L�M�
�6�=�/�2�
�&�/�+<�=�
��y��"*�6�=�#� >�!&��
�s� ;�!+�V�_�c� B�!C�	�	��D�%���D�E�M�M�(�(�?T�U�U���#�U�+��5�!��e�V�$�	&�F�9�T�>�"�"�,�)	6�)	6�)�F�F�G�T������.�+��6�!����w�/�&��+�
���v�.��-�.�.��7�"�S�(�&�,�7��G�#�d�*�F�L�9�	�		+�F�4��&�'�
�9��$�$�f�v�o�v�|�&*�>�&9�&;�
<�
<�
<��G�#�c�)�6�<�8�&��6�!����w�/�&��&�
���v�.��7�"�S�(�&�,�7��G�#�d�*�F�L�9��	&�F�4�	�>�"�
�9��$�$�i�&�&8�&�,�&*�9�n�&6�
7�
7�
7��G�#�c�)�6�<�8�%��6�!����w�/�&��%�
�)�#�V�\�6�:��
�&�&��7�"�S�(�&�,�7��G�#�d�*�F�L�9�	�		%�F�4��=�!�
�9��$�$�e�f�n�f�l�&*�8�m�&5�
6�
6�
6�
6��
rHz#.*?$z�
                abstract asm begin break case do else elsif end ensure extend if in
                include next of private protected require rescue return select self super
                then unless until when while with yield
            z\b)�suffixzz
                previous_def forall out uninitialized __DIR__ __FILE__ __LINE__
                __END_LINE__
            z(?<!\.))rKrqz(\.(is_a\?|nil\?|responds_to\?|as\?|as\b))�true�false�nilz2(module|lib)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)z)(def|fun|macro)(\s+)((?:[a-zA-Z_]\w*::)*)�funcnamezdef(?=[*%&^`~+-/\[<>=])zI(annotation|class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)�	classnamezN
                instance_sizeof offsetof pointerof sizeof typeof
            z+(?<!\.)(debugger\b|p!|pp!|record\b|spawn\b)z�
                abort at_exit caller exit gets loop main p pp print printf puts
                raise rand read_line sleep spawn sprintf system
            z(?<!\.)(((class_)?((getter|property)\b[!?]?|setter\b))|(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\b)z/(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)z(<<-?)("|\')()(\2)(.*?\n)�__END__�end-partab(?:^|(?<=[=<>~!:])|(?<=(?:\s|;)when\s)|(?<=(?:\s|;)or\s)|(?<=(?:\s|;)and\s)|(?<=\.index\s)|(?<=\.scan\s)|(?<=\.sub\s)|(?<=\.sub!\s)|(?<=\.gsub\s)|(?<=\.gsub!\s)|(?<=\.match\s)|(?<=(?:\s|;)if\s)|(?<=(?:\s|;)elsif\s)|(?<=^when\s)|(?<=^index\s)|(?<=^scan\s)|(?<=^sub\s)|(?<=^gsub\s)|(?<=^sub!\s)|(?<=^gsub!\s)|(?<=^match\s)|(?<=^if\s)|(?<=^elsif\s))(\s*)(/)�multiline-regexz
(?<=\(|,|\[)/z(\s+)(/)(?![\s=])z5(0o[0-7]+(?:_[0-7]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?zA(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?z3(0b[01]+(?:_[01]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)(?:e[+-]?[0-9]+)?(?:_?f[0-9]+)?)(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)(?:_?f[0-9]+)?)(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)?(?:_?f[0-9]+))(\s*)([/?])?z8(0\b|[1-9][\d]*(?:_\d+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?z@@[a-zA-Z_]\w*z
@[a-zA-Z_]\w*z\$\w+z\$[!@&`\'+~=/\\,;.<>_*$?:"^-]z\$-[0adFiIlpvw]z::rMzi\?(\\[MC]-)*(\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})|\S)(?!\w)z[A-Z][A-Z_]+\b(?!::|\.)z\{%�in-macro-controlz\{\{�
in-macro-exprz!(@\[)(\s*)([A-Z]\w*(::[A-Z]\w*)*)�in-annotz(\.|::)rJz,(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])z[a-zA-Z_]\w*(?:[!?](?!=))?z:(\[|\]\??|\*\*|<=>?|>=|<<?|>>?|=~|===|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&!^|~]=?z
[(){};,/?:\\]z\s+z\(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)rUz	[A-Z_]\w*z(\()(\s*)([A-Z_]\w*)(\s*)(\))rVr`rW�rootz#\{�in-intpzR\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})rbrRrTz[^\\#]+z\\\\z\\/z[^\\/#]+z/[imsx]*z.+z%\}z(for|verbatim)\bz\}\}rYrZ)r}rurvr~rbrRrSzinterpolated-regexzinterpolated-stringryrxrzr{r|N)5�__name__�
__module__�__qualname__�__doc__rk�url�aliases�	filenames�	mimetypes�re�DOTALL�	MULTILINE�flagsrGrpr	�Singler�splitr�Pseudo�Constantrrr�	Namespace�Builtin�Preprocr
rir�Octr
�Hex�Bin�Float�Integer�Variable�Class�Instance�Globalrre�Interpol�	Decoratorrdr�Functionr�Escaperh�tokens�update�rHrFrrs���������D�
#�C��Y��G���I�!�"�I��I���$�E�- �- �- �^F�F�F�RF
�
�w�~�&�F
��U�������	'�'�'�)0�	
1�F
��U������
�5�:�:�:�<C�>�
K�F
�9�'�.�I�F
��U�+�+�+�E�
:�
:�
:�G�<L�M�F
� C�
�X�g�z�4�>�
:�
:�
<�!F
�$:�
�X�g�z�4�>�
:�
:�J�
H�%F
�((��*�=�)F
�*Z�
�X�g�z�4�>�
:�
:�K�
I�+F
�0�U������
�5�:�:�:�;B�>�
K�1F
�8<�T�\�=P�Q�9F
�<�U������
�5�:�:�:�<@�<�
I�=F
�FY�
�\�
 �
"�GF
�N@�
�
�OF
�T*�+;�<�UF
�V���*�5�WF
�Z�.$�8�J���=�=�?P�/
R�[F
�L�v�|�->�?�MF
�P"�8�8�J���#E�#E�
�
 �QF
�dF�
�X�f�j�*�h�
7�
7�
9�eF
�hR�
�X�f�j�*�h�
7�
7�
9�iF
�lD�
�X�f�j�*�h�
7�
7�
9�mF
�t,�
�X�f�l�J��
9�
9�
;�uF
�z,�
�X�f�l�J��
9�
9�
;�{F
�@+�
�X�f�l�J��
9�
9�
;�AF
�FI�
�X�f�n�j�(�
;�
;�
=�GF
�L��
� 3�4�MF
�N�t�}�5�6�OF
�P�t�}�+�,�QF
�R.�t�}�/C�D�SF
�T ���!5�6�UF
�V�H��WF
�X
�G�I���YF
�\��[�
�]F
�d(���7�eF
�h�V�_�&8�9�iF
�j�f�o��7�kF
�n2�
�X�h�
�D�N�
;�
;�Z�
I�oF
�v�U�$�Z�
8�
8�
8�
�X�h��
�
.�
.�
0�wF
�z=�
�X�h��
%�
%�
'�{F
�@+�D�1�AF
�B%�&.�
0�CF
�F"�8�,�GF
�H�{�+�IF
�J�Z� �KF
�P6��X�d�j�(�D�M�
:�
:�F�
D�
�G�F�O�O�
��4�:�&�
-�
�X�k�:�t�z�:�{�
S�
S�
U��G�F�O�O�	
��F�O�W�-�
�F�O�V�,��G�F�O�O�
��V�_�i�0�
�
c�
�]�
�
�
�G�M�"�"��G�$�%�%� 
�

�G�M�"�"�
�v�|�$�
���&�
�
�G�M�"�"�
�v�|�$�
���&� 
�
�G�M�"�"�
�f�l�#�
�V�\�"�
�v�|�$�
�&�,�'�
�&�,��/�

��G�O�V�,�
��V�_�g�.�
�V�_�f�-�
 �'�*��G�F�O�O�	
��f�o�w�/�
�f�o�v�.��G�F�O�O�
��H�g�&�
�H�f�%��G�F�O�O�
�MK�K�F�X�M�M�*�*�,�,�-�-�-�-�-rH)r�r��pygments.lexerrrrrrr�pygments.tokenr	r
rrr
rrrr�__all__rdrr�rHrF�<module>r�s3����
�	�	�	�����������������#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#��
������R.�R.�R.�R.�R.�%�R.�R.�R.�R.�R.rH