123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- """
- 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'[+\-×÷\*√⌊⌈∧∨¬|≤<>≥=≠≡≢⊣⊢⥊∾≍⋈↑↓↕«»⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!𝕎𝕏𝔽𝔾𝕊]',
- 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),
- #
-
- ],
- }
-
|