Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pygments/lexers/boa.py: 100%
14 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-07-01 06:54 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-07-01 06:54 +0000
1"""
2 pygments.lexers.boa
3 ~~~~~~~~~~~~~~~~~~~
5 Lexers for the Boa language.
7 :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9"""
11from pygments.lexer import RegexLexer, words
12from pygments.token import String, Comment, Keyword, Name, Number, Operator, \
13 Punctuation, Whitespace
15__all__ = ['BoaLexer']
18class BoaLexer(RegexLexer):
19 """
20 Lexer for the `Boa <http://boa.cs.iastate.edu/docs/>`_ language.
22 .. versionadded:: 2.4
23 """
24 name = 'Boa'
25 aliases = ['boa']
26 filenames = ['*.boa']
28 reserved = words(
29 ('input', 'output', 'of', 'weight', 'before', 'after', 'stop',
30 'ifall', 'foreach', 'exists', 'function', 'break', 'switch', 'case',
31 'visitor', 'default', 'return', 'visit', 'while', 'if', 'else'),
32 suffix=r'\b', prefix=r'\b')
33 keywords = words(
34 ('bottom', 'collection', 'maximum', 'mean', 'minimum', 'set', 'sum',
35 'top', 'string', 'int', 'bool', 'float', 'time', 'false', 'true',
36 'array', 'map', 'stack', 'enum', 'type'), suffix=r'\b', prefix=r'\b')
37 classes = words(
38 ('Project', 'ForgeKind', 'CodeRepository', 'Revision', 'RepositoryKind',
39 'ChangedFile', 'FileKind', 'ASTRoot', 'Namespace', 'Declaration', 'Type',
40 'Method', 'Variable', 'Statement', 'Expression', 'Modifier',
41 'StatementKind', 'ExpressionKind', 'ModifierKind', 'Visibility',
42 'TypeKind', 'Person', 'ChangeKind'),
43 suffix=r'\b', prefix=r'\b')
44 operators = ('->', ':=', ':', '=', '<<', '!', '++', '||',
45 '&&', '+', '-', '*', ">", "<")
46 string_sep = ('`', '\"')
47 built_in_functions = words(
48 (
49 # Array functions
50 'new', 'sort',
51 # Date & Time functions
52 'yearof', 'dayofyear', 'hourof', 'minuteof', 'secondof', 'now',
53 'addday', 'addmonth', 'addweek', 'addyear', 'dayofmonth', 'dayofweek',
54 'dayofyear', 'formattime', 'trunctoday', 'trunctohour', 'trunctominute',
55 'trunctomonth', 'trunctosecond', 'trunctoyear',
56 # Map functions
57 'clear', 'haskey', 'keys', 'lookup', 'remove', 'values',
58 # Math functions
59 'abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh',
60 'ceil', 'cos', 'cosh', 'exp', 'floor', 'highbit', 'isfinite', 'isinf',
61 'isnan', 'isnormal', 'log', 'log10', 'max', 'min', 'nrand', 'pow',
62 'rand', 'round', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc',
63 # Other functions
64 'def', 'hash', 'len',
65 # Set functions
66 'add', 'contains', 'remove',
67 # String functions
68 'format', 'lowercase', 'match', 'matchposns', 'matchstrs', 'regex',
69 'split', 'splitall', 'splitn', 'strfind', 'strreplace', 'strrfind',
70 'substring', 'trim', 'uppercase',
71 # Type Conversion functions
72 'bool', 'float', 'int', 'string', 'time',
73 # Domain-Specific functions
74 'getast', 'getsnapshot', 'hasfiletype', 'isfixingrevision', 'iskind',
75 'isliteral',
76 ),
77 prefix=r'\b',
78 suffix=r'\(')
80 tokens = {
81 'root': [
82 (r'#.*?$', Comment.Single),
83 (r'/\*.*?\*/', Comment.Multiline),
84 (reserved, Keyword.Reserved),
85 (built_in_functions, Name.Function),
86 (keywords, Keyword.Type),
87 (classes, Name.Classes),
88 (words(operators), Operator),
89 (r'[][(),;{}\\.]', Punctuation),
90 (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
91 (r"`(\\\\|\\[^\\]|[^`\\])*`", String.Backtick),
92 (words(string_sep), String.Delimiter),
93 (r'[a-zA-Z_]+', Name.Variable),
94 (r'[0-9]+', Number.Integer),
95 (r'\s+', Whitespace), # Whitespace
96 ]
97 }