Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pygments/lexers/iolang.py: 100%
10 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.iolang
3 ~~~~~~~~~~~~~~~~~~~~~~
5 Lexers for the Io 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
12from pygments.token import Comment, Operator, Keyword, Name, String, Number, \
13 Whitespace
15__all__ = ['IoLexer']
18class IoLexer(RegexLexer):
19 """
20 For Io (a small, prototype-based programming language) source.
22 .. versionadded:: 0.10
23 """
24 name = 'Io'
25 url = 'http://iolanguage.com/'
26 filenames = ['*.io']
27 aliases = ['io']
28 mimetypes = ['text/x-iosrc']
29 tokens = {
30 'root': [
31 (r'\n', Whitespace),
32 (r'\s+', Whitespace),
33 # Comments
34 (r'//(.*?)$', Comment.Single),
35 (r'#(.*?)$', Comment.Single),
36 (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),
37 (r'/\+', Comment.Multiline, 'nestedcomment'),
38 # DoubleQuotedString
39 (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
40 # Operators
41 (r'::=|:=|=|\(|\)|;|,|\*|-|\+|>|<|@|!|/|\||\^|\.|%|&|\[|\]|\{|\}',
42 Operator),
43 # keywords
44 (r'(clone|do|doFile|doString|method|for|if|else|elseif|then)\b',
45 Keyword),
46 # constants
47 (r'(nil|false|true)\b', Name.Constant),
48 # names
49 (r'(Object|list|List|Map|args|Sequence|Coroutine|File)\b',
50 Name.Builtin),
51 (r'[a-zA-Z_]\w*', Name),
52 # numbers
53 (r'(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),
54 (r'\d+', Number.Integer)
55 ],
56 'nestedcomment': [
57 (r'[^+/]+', Comment.Multiline),
58 (r'/\+', Comment.Multiline, '#push'),
59 (r'\+/', Comment.Multiline, '#pop'),
60 (r'[+/]', Comment.Multiline),
61 ]
62 }