Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pygments/lexers/thingsdb.py: 100%

8 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-07 06:07 +0000

1""" 

2 pygments.lexers.thingsdb 

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

4 

5 Lexers for the ThingsDB 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, include, bygroups 

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

13 Operator, Punctuation, Whitespace 

14 

15__all__ = ['ThingsDBLexer'] 

16 

17 

18class ThingsDBLexer(RegexLexer): 

19 """ 

20 Lexer for the ThingsDB programming language. 

21 

22 .. versionadded:: 2.9 

23 """ 

24 name = 'ThingsDB' 

25 aliases = ['ti', 'thingsdb'] 

26 filenames = ['*.ti'] 

27 

28 tokens = { 

29 'root': [ 

30 include('expression'), 

31 ], 

32 'expression': [ 

33 include('comments'), 

34 include('whitespace'), 

35 

36 # numbers 

37 (r'[-+]?0b[01]+', Number.Bin), 

38 (r'[-+]?0o[0-8]+', Number.Oct), 

39 (r'([-+]?0x[0-9a-fA-F]+)', Number.Hex), 

40 (r'[-+]?[0-9]+', Number.Integer), 

41 (r'[-+]?((inf|nan)([^0-9A-Za-z_]|$)|[0-9]*\.[0-9]+(e[+-][0-9]+)?)', 

42 Number.Float), 

43 

44 # strings 

45 (r'(?:"(?:[^"]*)")+', String.Double), 

46 (r"(?:'(?:[^']*)')+", String.Single), 

47 

48 # literals 

49 (r'(true|false|nil)\b', Keyword.Constant), 

50 

51 # regular expressions 

52 (r'(/[^/\\]*(?:\\.[^/\\]*)*/i?)', String.Regex), 

53 

54 # thing id's 

55 (r'#[0-9]+', Comment.Preproc), 

56 

57 # name, assignments and functions 

58 include('names'), 

59 

60 (r'[(){}\[\],;]', Punctuation), 

61 (r'[+\-*/%&|<>^!~@=:?]', Operator), 

62 ], 

63 'names': [ 

64 (r'(\.)' 

65 r'(add|call|contains|del|endswith|extend|filter|find|findindex|' 

66 r'get|has|id|indexof|keys|len|lower|map|pop|push|remove|set|sort|' 

67 r'splice|startswith|test|unwrap|upper|values|wrap)' 

68 r'(\()', 

69 bygroups(Name.Function, Name.Function, Punctuation), 'arguments'), 

70 (r'(array|assert|assert_err|auth_err|backup_info|backups_info|' 

71 r'bad_data_err|bool|closure|collection_info|collections_info|' 

72 r'counters|deep|del_backup|del_collection|del_expired|del_node|' 

73 r'del_procedure|del_token|del_type|del_user|err|float|' 

74 r'forbidden_err|grant|int|isarray|isascii|isbool|isbytes|iserr|' 

75 r'isfloat|isinf|isint|islist|isnan|isnil|israw|isset|isstr|' 

76 r'isthing|istuple|isutf8|lookup_err|max_quota_err|mod_type|new|' 

77 r'new_backup|new_collection|new_node|new_procedure|new_token|' 

78 r'new_type|new_user|node_err|node_info|nodes_info|now|' 

79 r'num_arguments_err|operation_err|overflow_err|procedure_doc|' 

80 r'procedure_info|procedures_info|raise|refs|rename_collection|' 

81 r'rename_user|reset_counters|return|revoke|run|set_log_level|set|' 

82 r'set_quota|set_type|shutdown|str|syntax_err|thing|try|type|' 

83 r'type_err|type_count|type_info|types_info|user_info|users_info|' 

84 r'value_err|wse|zero_div_err)' 

85 r'(\()', 

86 bygroups(Name.Function, Punctuation), 

87 'arguments'), 

88 (r'(\.[A-Za-z_][0-9A-Za-z_]*)' 

89 r'(\s*)(=)', 

90 bygroups(Name.Attribute, Text, Operator)), 

91 (r'\.[A-Za-z_][0-9A-Za-z_]*', Name.Attribute), 

92 (r'([A-Za-z_][0-9A-Za-z_]*)(\s*)(=)', 

93 bygroups(Name.Variable, Text, Operator)), 

94 (r'[A-Za-z_][0-9A-Za-z_]*', Name.Variable), 

95 ], 

96 'whitespace': [ 

97 (r'\n', Whitespace), 

98 (r'\s+', Whitespace), 

99 ], 

100 'comments': [ 

101 (r'//(.*?)\n', Comment.Single), 

102 (r'/\*', Comment.Multiline, 'comment'), 

103 ], 

104 'comment': [ 

105 (r'[^*/]+', Comment.Multiline), 

106 (r'/\*', Comment.Multiline, '#push'), 

107 (r'\*/', Comment.Multiline, '#pop'), 

108 (r'[*/]', Comment.Multiline), 

109 ], 

110 'arguments': [ 

111 include('expression'), 

112 (',', Punctuation), 

113 (r'\(', Punctuation, '#push'), 

114 (r'\)', Punctuation, '#pop'), 

115 ], 

116 }