codekingpro/portable-devtools
114k
1"""2 pygments.lexers.iolang3 ~~~~~~~~~~~~~~~~~~~~~~4 5 Lexers for the Io language.6 7 :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.8 :license: BSD, see LICENSE for details.9"""10 11from pygments.lexer import RegexLexer12from pygments.token import Comment, Operator, Keyword, Name, String, Number, \13 Whitespace14 15__all__ = ['IoLexer']16 17 18class IoLexer(RegexLexer):19 """20 For Io (a small, prototype-based programming language) source.21 """22 name = 'Io'23 url = 'http://iolanguage.com/'24 filenames = ['*.io']25 aliases = ['io']26 mimetypes = ['text/x-iosrc']27 version_added = '0.10'28 tokens = {29 'root': [30 (r'\n', Whitespace),31 (r'\s+', Whitespace),32 # Comments33 (r'//(.*?)$', Comment.Single),34 (r'#(.*?)$', Comment.Single),35 (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),36 (r'/\+', Comment.Multiline, 'nestedcomment'),37 # DoubleQuotedString38 (r'"(\\\\|\\[^\\]|[^"\\])*"', String),39 # Operators40 (r'::=|:=|=|\(|\)|;|,|\*|-|\+|>|<|@|!|/|\||\^|\.|%|&|\[|\]|\{|\}',41 Operator),42 # keywords43 (r'(clone|do|doFile|doString|method|for|if|else|elseif|then)\b',44 Keyword),45 # constants46 (r'(nil|false|true)\b', Name.Constant),47 # names48 (r'(Object|list|List|Map|args|Sequence|Coroutine|File)\b',49 Name.Builtin),50 (r'[a-zA-Z_]\w*', Name),51 # numbers52 (r'(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),53 (r'\d+', Number.Integer)54 ],55 'nestedcomment': [56 (r'[^+/]+', Comment.Multiline),57 (r'/\+', Comment.Multiline, '#push'),58 (r'\+/', Comment.Multiline, '#pop'),59 (r'[+/]', Comment.Multiline),60 ]61 }62 