�
|�e�( � �� � d Z ddlmZmZmZmZ ddlmZmZm Z m
Z
mZmZm
Z
mZmZ g d�Z G d� de� Z G d� de� Z G d � d
e� Z G d� de� Z G d
� de� Z G d� de� Zy)z�
pygments.lexers.esoteric
~~~~~~~~~~~~~~~~~~~~~~~~
Lexers for esoteric languages.
:copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
� )�
RegexLexer�include�words�bygroups) �Comment�Operator�Keyword�Name�String�Number�Punctuation�Error�
Whitespace)�BrainfuckLexer�BefungeLexer�RedcodeLexer�CAmkESLexer�
CapDLLexer�
AheuiLexerc �� � e Zd ZdZdZdZddgZddgZdgZd e j fd
e j fde j fde
fgd
edfdef ed� gd
edfdedf ed� gd�Zd� Zy)r z4
Lexer for the esoteric BrainFuck language.
� Brainfuckz'http://www.muppetlabs.com/~breadbox/bf/� brainfuck�bfz*.bfz*.bzapplication/x-brainfuckz[.,]+z[+-]+z[<>]+z[^.,+\-<>\[\]]+z\[�loopz\]�commonz#pushz#pop)r �rootr c �� � d}d}t dt | � � }| d| D ]! }|dk( s|dk( r|dz
}|dk( s|dk( s�|dz
}�# |d |z kD ry
|d |z kD ry
d}d| v r|dz
}|S )
z]It's safe to assume that a program which mostly consists of + -
and < > is brainfuck.r � N�+�-� �<�>g �?g �?z[-]g �?)�max�len)�text�plus_minus_count�greater_less_count�range_to_check�c�results �:/usr/lib/python3/dist-packages/pygments/lexers/esoteric.py�analyse_textzBrainfuckLexer.analyse_text2 s� � � �����S�#�d�)�,���o�~�&� (�A��C�x�1��8� �A�%� ��C�x�1��8�"�a�'�"� (� �t�n�4�5�����!6�7�����D�=��c�M�F��
� N)�__name__�
__module__�__qualname__�__doc__�name�url�aliases� filenames� mimetypesr
�Tag�Builtin�Variabler r r r �tokensr- � r. r, r r s� � �� �D�
3�C��D�!�G����I�*�+�I�
�t�x�x� �
�t�|�|�$�
�t�}�}�%�
��)�
� �G�V�$�
�E�N��H��
� �G�W�%�
�G�V�$��H��
��F�(r. r c �� � e Zd ZdZdZdZdgZdgZdgZdde fd e
fd
ej fdej fdefd
ej fdej" |