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

1""" 

2 pygments.lexers.iolang 

3 ~~~~~~~~~~~~~~~~~~~~~~ 

4 

5 Lexers for the Io language. 

6 

7 :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. 

8 :license: BSD, see LICENSE for details. 

9""" 

10 

11from pygments.lexer import RegexLexer 

12from pygments.token import Comment, Operator, Keyword, Name, String, Number, \ 

13 Whitespace 

14 

15__all__ = ['IoLexer'] 

16 

17 

18class IoLexer(RegexLexer): 

19 """ 

20 For Io (a small, prototype-based programming language) source. 

21 

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 }