<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">"""
    pygments.lexers.bqn
    ~~~~~~~~~~~~~~~~~~~

    Lexer for BQN.

    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
"""

from pygments.lexer import RegexLexer
from pygments.token import Comment, Operator, Keyword, Name, String, \
    Number, Punctuation, Whitespace

__all__ = ['BQNLexer']


class BQNLexer(RegexLexer):
    """
    A simple BQN lexer.
    """
    name = 'BQN'
    url = 'https://mlochbaum.github.io/BQN/index.html'
    aliases = ['bqn']
    filenames = ['*.bqn']
    mimetypes = []
    version_added = '2.16'

    tokens = {
        'root': [
            # Whitespace
            # ==========
            (r'\s+', Whitespace),
            #
            # Comment
            # =======
            # '#' is a comment that continues to the end of the line
            (r'#.*$', Comment.Single),
            #
            # Strings
            # =======
            (r'\'((\'\')|[^\'])*\'', String.Single),
            (r'"(("")|[^"])*"', String.Double),
            #
            # Null Character
            # ==============
            # Literal representation of the null character
            (r'@', String.Symbol),
            #
            # Punctuation
            # ===========
            # This token type is used for diamond, commas
            # and  array and list brackets and strand syntax
            (r'[\.â‹„,\[\]âŸ¨âŸ©â€¿]', Punctuation),
            #
            # Expression Grouping
            # ===================
            # Since this token type is important in BQN, it is not included in
            # the punctuation token type but rather in the following one
            (r'[\(\)]', String.Regex), 
            #
            # Numbers
            # =======
            # Includes the numeric literals and the Nothing character
            (r'Â¯?([0-9]+\.?[0-9]+|[0-9]+)([Ee][Â¯]?[0-9]+)?|Â¯|âˆž|Ï€|Â·', Number),
            #
            # Variables
            # =========
            (r'\b[a-z]\w*\b', Name.Variable),
            #
            # 1-Modifiers
            # ===========
            (r'[Ë™ËœË˜Â¨âŒœâ¼Â´Ë`ð•£]', Name.Attribute),
            (r'\b_[a-zA-Z0-9]+\b', Name.Attribute),
            #
            # 2-Modifiers
            # ===========
            (r'[âˆ˜â—‹âŠ¸âŸœâŒ¾âŠ˜â—¶âŽ‰âš‡âŸâŽŠ]', Name.Property),
            (r'\b_[a-zA-Z0-9]+_\b', Name.Property),
            #
            # Functions
            # =========
            # The monadic or dyadic function primitives and function
            # operands and arguments, along with function self-reference
            (r'[+\-Ã—Ã·\*âˆšâŒŠâŒˆâˆ§âˆ¨Â¬|â‰¤&lt;&gt;â‰¥=â‰&nbsp;â‰¡â‰¢âŠ£âŠ¢â¥Šâˆ¾â‰â‹ˆâ†‘â†“â†•Â«Â»âŒ½â‰/â‹â’âŠâŠ‘âŠâŠ’âˆŠâ·âŠ”!ð•Žð•ð”½ð”¾ð•Š]',
             Operator),
            (r'[A-Z]\w*|â€¢\w+\b', Operator),
            #
            # Constant
            # ========
            (r'Ë™', Name.Constant),
            #
            # Define/Export/Change
            # ====================
            (r'[â†â†©â‡]', Keyword.Declaration),
            #
            # Blocks
            # ======
            (r'[{}]', Keyword.Type),
            #
            # Extra characters
            # ================
            (r'[;:?ð•¨ð•©ð•—ð•˜ð•¤]', Name.Entity),
            #
            
        ],
    }

    
</pre></body></html>