aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Pygments/py3/pygments/lexers/iolang.py
blob: d47eec6ac7bc781d7c833bbd0de2f45440a0364e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
""" 
    pygments.lexers.iolang 
    ~~~~~~~~~~~~~~~~~~~~~~ 
 
    Lexers for the Io language. 
 
    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details. 
""" 
 
from pygments.lexer import RegexLexer 
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ 
    Number 
 
__all__ = ['IoLexer'] 
 
 
class IoLexer(RegexLexer): 
    """ 
    For `Io <http://iolanguage.com/>`_ (a small, prototype-based 
    programming language) source. 
 
    .. versionadded:: 0.10 
    """ 
    name = 'Io' 
    filenames = ['*.io'] 
    aliases = ['io'] 
    mimetypes = ['text/x-iosrc'] 
    tokens = { 
        'root': [ 
            (r'\n', Text), 
            (r'\s+', Text), 
            # Comments 
            (r'//(.*?)\n', Comment.Single), 
            (r'#(.*?)\n', Comment.Single), 
            (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline), 
            (r'/\+', Comment.Multiline, 'nestedcomment'), 
            # DoubleQuotedString 
            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
            # Operators 
            (r'::=|:=|=|\(|\)|;|,|\*|-|\+|>|<|@|!|/|\||\^|\.|%|&|\[|\]|\{|\}', 
             Operator), 
            # keywords 
            (r'(clone|do|doFile|doString|method|for|if|else|elseif|then)\b', 
             Keyword), 
            # constants 
            (r'(nil|false|true)\b', Name.Constant), 
            # names 
            (r'(Object|list|List|Map|args|Sequence|Coroutine|File)\b', 
             Name.Builtin), 
            (r'[a-zA-Z_]\w*', Name),
            # numbers 
            (r'(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float), 
            (r'\d+', Number.Integer) 
        ], 
        'nestedcomment': [ 
            (r'[^+/]+', Comment.Multiline), 
            (r'/\+', Comment.Multiline, '#push'), 
            (r'\+/', Comment.Multiline, '#pop'), 
            (r'[+/]', Comment.Multiline), 
        ] 
    }