HOME


Mini Shell 1.0
DIR: /usr/lib/python3/dist-packages/pygments/lexers/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/pygments/lexers/__pycache__/crystal.cpython-312.pyc
�

|�e�=���dZddlZddlmZmZmZmZmZmZddl	m
Z
mZmZm
Z
mZmZmZmZmZdgZgd�ZGd�de�Zy)z�
    pygments.lexers.crystal
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexer for Crystal.

    :copyright: Copyright 2006-2023 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	je	jzZd�Z
d	�Zgd
ej f�edj%�d�
�ef�edj%�dd��ej(f�dej(f�egd�d�
�ej*f�deeeej2�f�deeeej2�df�dedf�deeeej2�df�edj%�dd��ej(f�dej4j(f�edj%�dd��ej4f�dej4j(f�de
f�de
f�dej6d f�d!eeej:�d"f�d#ej:d"f�d$eeej:�d"f�d%eej>ee �f�d&eejBee �f�d'eejDee �f�d(eejFee �f�d)eejFee �f�d*eejFee �f�d+eejHee �f�d,ejJjLf�d-ejJjNf�d.ejJjPf�d/ejJjPf�d0ejJjPf�d1e f�e)d2��d3ejTf�d4ej*f�d5ejVd6f�d7ejVd8f�d9ee eejX�d:f�ee-d;�<�ee ej@�f�d=ee e�f�d>ef�d?e f�d@e f�dAe.f�dBef�dCeejLe ej^�dDfe0dD�gdEejLfdFee.eejLee.�fe0dD�gdGejVdHfdIejVdDfe)dJ�gdKejVdLfgdMejbfge)dN�e)dO�ge)dN�dPej:fdQej:fge)dN�dPejdfdQejdfge)dN�dRej:fdSej:fdPej:fdTej:fdUej:dDfgdVej6dDfgd5ejVdHfdWejVdDfdXefe)dJ�gd7ejVdHfdYejVdDfe)dJ�gdZe dHfd[e dDfe)dJ�gd\�Z3e3jie��y])^rz=
    For Crystal source code.

    .. versionadded:: 2.2
    �Crystalzhttps://crystal-lang.org�cr�crystalz*.crztext/x-crystalc#�HK�|jd�}|t|jd�f��|jd�tj|jd�f��|jd�tj
|jd�f��|jd�tj|jd�f��|jjdg�}t|�}|j|jd�dk(|jd�f�|jd�|_
|jd�|_t|�dkr|j|�	�Ed{���n.|jtj|jd�f��|j�|_
|�r`|D�]:\}}g}tj|j |j�D]�}|r|j�j#�}	n|j�j%�}	|	|k(r�|D]3}
|
j�tj|
j�f���5|j�tj
|j�f��|j�|_
��|j|���|D])}
|
j�t&|
j�f���+��=t|j �|_|dd�=yy7����w)
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*st�������A����X�u�{�{�1�~�-�-��k�k�!�n�f�n�n�e�k�k�!�n�<�<��k�k�!�n�f�.�.����A��>�>��k�k�!�n�f�n�n�e�k�k�!�n�<�<��|�|�.�.�~�r�B���\�*�*�	����U�[�[��^�u�4�e�k�k�!�n�E�F��+�+�a�.����)�)�A�,����|��s�"��2�2�3�2�?�?�?��'�'�6�>�>�5�;�;�q�>�9�9��)�)�+����$0�
D� ��&���$�-�-�c�h�h����@�D�E�� %���
� 3� 3� 5�� %���
� 4� 4� 6�����&+�Q�F�"(�,�,�.�&�.�.�&�,�,�.�"P�P�Q�#�k�k�m�V�-=�-=�u�{�{�}�L�L�"'�)�)�+�������U�+�D�#(�D��$�l�l�n�e�V�\�\�^�C�C�D�#
D�&�#�(�(�m�C�G��Q��-�
@�s�E0L"�2L�3F-L"c
�f�i}dtjfttd��tjfdtjfdtjfdtjdfdttjt�fd	tjd
fdtjdfg|d
<dtjd	fdtjd	fdtjdffD],\}}}t|dk(rdnd�d|z|fd|f||dfg|d|z<�.dD�]\}}}}d|ztjfg||k7|tjdfgzz|tjdftd�d|zdztjfd|zdztjfgz||dz<|d
jd |ztj|dzf�d!|zdztjfg||k7|tjdfgzz|tjdfd|zdztjfd|zdztjfgz||d"z<|d
jd#|ztj|d"zf�d!|zdztjfg||k7|tjdfgzz|d$ztjdftd%�d|zdztjfd|zdztjfgz||d&z<|d
jd'|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�M�*�
�$�U�
3�V�]�]�C�
)�6�=�=�9�
+�V�[�[�9�
�F�M�M�<�0�
&������(L�M�
�6�=�=�/�2�
�&�/�/�+<�=�
��y��"*�6�=�=�#� >�!&��
�
�s� ;�!+�V�_�_�c� B�!C�	��D�%���D�E�M�(�?T�U���#�U�+��5�!��e�V�$�	&�F�9�T�>�"�	�,�)	6�)�F�F�G�T�������.�+��6�!�����w�/�&��+�
����v�.��-�.��7�"�S�(�&�,�,�7��G�#�d�*�F�L�L�9�	�		+�F�4��&�'�
�9��$�$�f�v�o�v�|�|�&*�>�&9�&;�
<��G�#�c�)�6�<�<�8�&��6�!�����w�/�&��&�
����v�.��7�"�S�(�&�,�,�7��G�#�d�*�F�L�L�9��	&�F�4�	�>�"�
�9��$�$�i�&�&8�&�,�,�&*�9�n�&6�
7��G�#�c�)�6�<�<�8�%��6�!�����w�/�&��%�
�)�#�V�\�\�6�:��
�&��7�"�S�(�&�,�,�7��G�#�d�*�F�L�L�9�	�		%�F�4��=�!�
�9��$�$�e�f�n�f�l�l�&*�8�m�&5�
6�Q)	6�V�
�z#.*?$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(?<!\.))rJrqz(\.(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::rLzi\?(\\[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(\.|::)rIz,(\.|::)([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*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)rTz	[A-Z_]\w*z(\()(\s*)([A-Z_]\w*)(\s*)(\))rUr_rV�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 ]+\})rarQrSz[^\\#]+z\\\\z\\/z[^\\/#]+z/[imsx]*z.+z%\}z(for|verbatim)\bz\}\}rXrY)r}rurvr~rarQrRzinterpolated-regexzinterpolated-stringryrxrzr{r|N)5�__name__�
__module__�__qualname__�__doc__rj�url�aliases�	filenames�	mimetypes�re�DOTALL�	MULTILINE�flagsrGror	�Singler�splitr�Pseudo�Constantrrr�	Namespace�Builtin�Preprocr
rhr�Octr
�Hex�Bin�Float�Integer�Variable�Class�Instance�Globalrrd�Interpol�	Decoratorrcr�Functionr�Escaperg�tokens�update�rprFrrs�����D�
$�C��Y��G���I�!�"�I��I�I����$�E�- �^F�RF
�
�w�~�~�&�F
�������	'�)0�	
1�F
������
�5�:�<C�>�>�
K�F
�9�'�.�.�I�F
��+�E�
:�G�<L�<L�M�F
� C�
�g�z�4�>�>�
:�
<�!F
�$:�
�g�z�4�>�>�
:�J�
H�%F
�((��*�=�)F
�*Z�
�g�z�4�>�>�
:�K�
I�+F
�0�����
�5�:�;B�>�>�
K�1F
�8<�T�\�\�=P�=P�Q�9F
�<�����
�5�:�<@�<�<�
I�=F
�FY�
�\�\�
 �
 �
"�GF
�N@�
�
�OF
�T*�+;�<�UF
�V����*�5�WF
�Z�.$�J����=�?P�/
R�[F
�L�v�|�|�->�?�MF
�P"�8�J����#E�
�
 �QF
�dF�
�f�j�j�*�h�
7�
9�eF
�hR�
�f�j�j�*�h�
7�
9�iF
�lD�
�f�j�j�*�h�
7�
9�mF
�t,�
�f�l�l�J��
9�
;�uF
�z,�
�f�l�l�J��
9�
;�{F
�@+�
�f�l�l�J��
9�
;�AF
�FI�
�f�n�n�j�(�
;�
=�GF
�L��
�
� 3� 3�4�MF
�N�t�}�}�5�5�6�OF
�P�t�}�}�+�+�,�QF
�R.�t�}�}�/C�/C�D�SF
�T ����!5�!5�6�UF
�V�H��WF
�X
�I��YF
�\��[�[�
�]F
�d(����7�eF
�h�V�_�_�&8�9�iF
�j�f�o�o��7�kF
�n2�
�h�
�D�N�N�
;�Z�
I�oF
�v�$�Z�
8�
�h��
�
�
.�
0�wF
�z=�
�h��
%�
'�{F
�@+�D�1�AF
�B%�&.�
0�CF
�F"�8�,�GF
�H�{�+�IF
�J�Z� �KF
�P6��d�j�j�(�D�M�M�
:�F�
D�
�F�O�
��4�:�:�&�
-�
�k�:�t�z�z�:�{�
S�
U��F�O�	
��F�O�O�W�-�
�F�O�O�V�,��F�O�
��V�_�_�i�0�
�
c�
�]�]�
�
�
�M�"��$�%� 
�

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

��G�O�O�V�,�
��V�_�_�g�.�
�V�_�_�f�-�
 �'�*��F�O�	
��f�o�o�w�/�
�f�o�o�v�.��F�O�
��H�g�&�
�H�f�%��F�O�
�MK�F�X�M�M�*�,�-rp)r�r��pygments.lexerrrrrrr�pygments.tokenr	r
rrr
rrrr�__all__rcrr�rprF�<module>r�sI���
���#�#�#��
����R.�%�R.rp