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-present 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 

17 

18class RellLexer(RegexLexer): 

19 """ 

20 A Lexer for Rell. 

21 """ 

22 name = 'Rell' 

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

24 aliases = ['rell'] 

25 filenames = ['*.rell'] 

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

27 version_added = '2.20' 

28 

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

30 

31 tokens = { 

32 'root': [ 

33 (words(( 

34 'big_integer', 'boolean', 'byte_array', 'decimal', 'gtv', 

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

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

37 Keyword.Type), 

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

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

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

41 (words(( 

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

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

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

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

46 Keyword.Reserved), 

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

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

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

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

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

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

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

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

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

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

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

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

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

60 (ident, Name), 

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

62 ], 

63 'function': [ 

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

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

66 default('#pop'), 

67 ], 

68 }