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

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

13 statements  

1""" 

2 pygments.lexers.rell 

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

4 

5 Lexers for the Rell language. 

6 

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

8 :license: BSD, see LICENSE for details. 

9""" 

10 

11from pygments.lexer import RegexLexer, bygroups, default, words 

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

13 Punctuation, Whitespace 

14 

15__all__ = ['RellLexer'] 

16 

17class RellLexer(RegexLexer): 

18 """ 

19 A Lexer for Rell. 

20 """ 

21 name = 'Rell' 

22 url = 'https://docs.chromia.com/rell/rell-intro' 

23 aliases = ['rell'] 

24 filenames = ['*.rell'] 

25 mimetypes = ['text/x-rell'] 

26 version_added = '2.20' 

27 

28 ident = r'[a-zA-Z_][a-zA-Z0-9_]*' 

29 

30 tokens = { 

31 'root': [ 

32 (words(( 

33 'big_integer', 'boolean', 'byte_array', 'decimal', 'gtv', 

34 'integer', 'json', 'list', 'map', 'mutable', 'set', 'text', 

35 'virtual'), suffix=r'\b'), 

36 Keyword.Type), 

37 (r'(false|true|null)\b', Keyword.Constant), 

38 (r'(entity|enum|namespace|object|struct)\b', Keyword.Declaration), 

39 (r'(function|operation|query)\b', Keyword.Declaration, 'function'), 

40 (words(( 

41 'abstract', 'and', 'break', 'continue', 'create', 'delete', 

42 'else', 'for', 'if', 'import', 'in', 'index', 'key', 'limit', 

43 'module', 'not', 'offset', 'or', 'override', 'return', 'update', 

44 'val', 'var', 'when', 'while'), suffix=r'\b'), 

45 Keyword.Reserved), 

46 (r'//.*?$', Comment.Single), 

47 (r'/\*(.|\n|\r)*?\*/', Comment.Multiline), 

48 (r'"(\\\\|\\"|[^"])*"', String.Double), 

49 (r'\'(\\\\|\\\'|[^\\\'])*\'', String.Single), 

50 (r'-?[0-9]*\.[0-9]+([eE][+-][0-9]+)?', Number.Float), 

51 (r'-?[0-9]+([eE][+-][0-9]+|[lL])?', Number.Integer), 

52 (r'x(\'[a-fA-F0-9]*\'|"[a-fA-F0-9]*")', String.Binary), 

53 (r'(\.)([ \n\t\r]*)(' + ident + ')', 

54 bygroups(Punctuation, Whitespace, Name.Attribute)), 

55 (r'[{}():;,]+', Punctuation), 

56 (r'[ \n\t\r]+', Whitespace), 

57 (r'@[a-zA-Z_][a-zA-Z0-9_]*', Name.Decorator), 

58 (r'[~^*!%&\[\]<>|+=/?\-@\$]', Punctuation.Marker), 

59 (ident, Name), 

60 (r'(\.)+', Punctuation), 

61 ], 

62 'function': [ 

63 (r'[ \n\t\r]+', Whitespace), 

64 (ident, Name.Function, '#pop'), 

65 default('#pop'), 

66 ], 

67 }