ThirdParty/Pygments/pygments/lexers/iolang.py

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

eric ide

mercurial