second commit
This commit is contained in:
97
env/lib/python3.11/site-packages/pygments/lexers/boa.py
vendored
Normal file
97
env/lib/python3.11/site-packages/pygments/lexers/boa.py
vendored
Normal file
@ -0,0 +1,97 @@
|
||||
"""
|
||||
pygments.lexers.boa
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Lexers for the Boa language.
|
||||
|
||||
:copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
|
||||
:license: BSD, see LICENSE for details.
|
||||
"""
|
||||
|
||||
from pygments.lexer import RegexLexer, words
|
||||
from pygments.token import String, Comment, Keyword, Name, Number, Operator, \
|
||||
Punctuation, Whitespace
|
||||
|
||||
__all__ = ['BoaLexer']
|
||||
|
||||
|
||||
class BoaLexer(RegexLexer):
|
||||
"""
|
||||
Lexer for the Boa language.
|
||||
"""
|
||||
name = 'Boa'
|
||||
aliases = ['boa']
|
||||
filenames = ['*.boa']
|
||||
url = 'https://boa.cs.iastate.edu/docs'
|
||||
version_added = '2.4'
|
||||
|
||||
reserved = words(
|
||||
('input', 'output', 'of', 'weight', 'before', 'after', 'stop',
|
||||
'ifall', 'foreach', 'exists', 'function', 'break', 'switch', 'case',
|
||||
'visitor', 'default', 'return', 'visit', 'while', 'if', 'else'),
|
||||
suffix=r'\b', prefix=r'\b')
|
||||
keywords = words(
|
||||
('bottom', 'collection', 'maximum', 'mean', 'minimum', 'set', 'sum',
|
||||
'top', 'string', 'int', 'bool', 'float', 'time', 'false', 'true',
|
||||
'array', 'map', 'stack', 'enum', 'type'), suffix=r'\b', prefix=r'\b')
|
||||
classes = words(
|
||||
('Project', 'ForgeKind', 'CodeRepository', 'Revision', 'RepositoryKind',
|
||||
'ChangedFile', 'FileKind', 'ASTRoot', 'Namespace', 'Declaration', 'Type',
|
||||
'Method', 'Variable', 'Statement', 'Expression', 'Modifier',
|
||||
'StatementKind', 'ExpressionKind', 'ModifierKind', 'Visibility',
|
||||
'TypeKind', 'Person', 'ChangeKind'),
|
||||
suffix=r'\b', prefix=r'\b')
|
||||
operators = ('->', ':=', ':', '=', '<<', '!', '++', '||',
|
||||
'&&', '+', '-', '*', ">", "<")
|
||||
string_sep = ('`', '\"')
|
||||
built_in_functions = words(
|
||||
(
|
||||
# Array functions
|
||||
'new', 'sort',
|
||||
# Date & Time functions
|
||||
'yearof', 'dayofyear', 'hourof', 'minuteof', 'secondof', 'now',
|
||||
'addday', 'addmonth', 'addweek', 'addyear', 'dayofmonth', 'dayofweek',
|
||||
'dayofyear', 'formattime', 'trunctoday', 'trunctohour', 'trunctominute',
|
||||
'trunctomonth', 'trunctosecond', 'trunctoyear',
|
||||
# Map functions
|
||||
'clear', 'haskey', 'keys', 'lookup', 'remove', 'values',
|
||||
# Math functions
|
||||
'abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh',
|
||||
'ceil', 'cos', 'cosh', 'exp', 'floor', 'highbit', 'isfinite', 'isinf',
|
||||
'isnan', 'isnormal', 'log', 'log10', 'max', 'min', 'nrand', 'pow',
|
||||
'rand', 'round', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc',
|
||||
# Other functions
|
||||
'def', 'hash', 'len',
|
||||
# Set functions
|
||||
'add', 'contains', 'remove',
|
||||
# String functions
|
||||
'format', 'lowercase', 'match', 'matchposns', 'matchstrs', 'regex',
|
||||
'split', 'splitall', 'splitn', 'strfind', 'strreplace', 'strrfind',
|
||||
'substring', 'trim', 'uppercase',
|
||||
# Type Conversion functions
|
||||
'bool', 'float', 'int', 'string', 'time',
|
||||
# Domain-Specific functions
|
||||
'getast', 'getsnapshot', 'hasfiletype', 'isfixingrevision', 'iskind',
|
||||
'isliteral',
|
||||
),
|
||||
prefix=r'\b',
|
||||
suffix=r'\(')
|
||||
|
||||
tokens = {
|
||||
'root': [
|
||||
(r'#.*?$', Comment.Single),
|
||||
(r'/\*.*?\*/', Comment.Multiline),
|
||||
(reserved, Keyword.Reserved),
|
||||
(built_in_functions, Name.Function),
|
||||
(keywords, Keyword.Type),
|
||||
(classes, Name.Classes),
|
||||
(words(operators), Operator),
|
||||
(r'[][(),;{}\\.]', Punctuation),
|
||||
(r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
|
||||
(r"`(\\\\|\\[^\\]|[^`\\])*`", String.Backtick),
|
||||
(words(string_sep), String.Delimiter),
|
||||
(r'[a-zA-Z_]+', Name.Variable),
|
||||
(r'[0-9]+', Number.Integer),
|
||||
(r'\s+', Whitespace), # Whitespace
|
||||
]
|
||||
}
|
Reference in New Issue
Block a user