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

10 statements  

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

1""" 

2 pygments.lexers.bare 

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

4 

5 Lexer for the BARE schema. 

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, words, bygroups 

12from pygments.token import Text, Comment, Keyword, Name, Literal, Whitespace 

13 

14__all__ = ['BareLexer'] 

15 

16 

17class BareLexer(RegexLexer): 

18 """ 

19 For BARE schema source. 

20 

21 .. versionadded:: 2.7 

22 """ 

23 name = 'BARE' 

24 url = 'https://baremessages.org' 

25 filenames = ['*.bare'] 

26 aliases = ['bare'] 

27 

28 keywords = [ 

29 'type', 

30 'enum', 

31 'u8', 

32 'u16', 

33 'u32', 

34 'u64', 

35 'uint', 

36 'i8', 

37 'i16', 

38 'i32', 

39 'i64', 

40 'int', 

41 'f32', 

42 'f64', 

43 'bool', 

44 'void', 

45 'data', 

46 'string', 

47 'optional', 

48 'map', 

49 ] 

50 

51 tokens = { 

52 'root': [ 

53 (r'(type)(\s+)([A-Z][a-zA-Z0-9]+)(\s+)(\{)', 

54 bygroups(Keyword, Whitespace, Name.Class, Whitespace, Text), 'struct'), 

55 (r'(type)(\s+)([A-Z][a-zA-Z0-9]+)(\s+)(\()', 

56 bygroups(Keyword, Whitespace, Name.Class, Whitespace, Text), 'union'), 

57 (r'(type)(\s+)([A-Z][a-zA-Z0-9]+)(\s+)', 

58 bygroups(Keyword, Whitespace, Name, Whitespace), 'typedef'), 

59 (r'(enum)(\s+)([A-Z][a-zA-Z0-9]+)(\s+\{)', 

60 bygroups(Keyword, Whitespace, Name.Class, Whitespace), 'enum'), 

61 (r'#.*?$', Comment), 

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

63 ], 

64 'struct': [ 

65 (r'\{', Text, '#push'), 

66 (r'\}', Text, '#pop'), 

67 (r'([a-zA-Z0-9]+)(:)(\s*)', 

68 bygroups(Name.Attribute, Text, Whitespace), 'typedef'), 

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

70 ], 

71 'union': [ 

72 (r'\)', Text, '#pop'), 

73 (r'(\s*)(\|)(\s*)', bygroups(Whitespace, Text, Whitespace)), 

74 (r'[A-Z][a-zA-Z0-9]+', Name.Class), 

75 (words(keywords), Keyword), 

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

77 ], 

78 'typedef': [ 

79 (r'\[\]', Text), 

80 (r'#.*?$', Comment, '#pop'), 

81 (r'(\[)(\d+)(\])', bygroups(Text, Literal, Text)), 

82 (r'<|>', Text), 

83 (r'\(', Text, 'union'), 

84 (r'(\[)([a-z][a-z-A-Z0-9]+)(\])', bygroups(Text, Keyword, Text)), 

85 (r'(\[)([A-Z][a-z-A-Z0-9]+)(\])', bygroups(Text, Name.Class, Text)), 

86 (r'([A-Z][a-z-A-Z0-9]+)', Name.Class), 

87 (words(keywords), Keyword), 

88 (r'\n', Text, '#pop'), 

89 (r'\{', Text, 'struct'), 

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

91 (r'\d+', Literal), 

92 ], 

93 'enum': [ 

94 (r'\{', Text, '#push'), 

95 (r'\}', Text, '#pop'), 

96 (r'([A-Z][A-Z0-9_]*)(\s*=\s*)(\d+)', 

97 bygroups(Name.Attribute, Text, Literal)), 

98 (r'([A-Z][A-Z0-9_]*)', bygroups(Name.Attribute)), 

99 (r'#.*?$', Comment), 

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

101 ], 

102 }