Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pygments/lexers/arrow.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

14 statements  

1""" 

2 pygments.lexers.arrow 

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

4 

5 Lexer for Arrow. 

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, include 

12from pygments.token import Text, Operator, Keyword, Punctuation, Name, \ 

13 String, Number, Whitespace 

14 

15__all__ = ['ArrowLexer'] 

16 

17TYPES = r'\b(int|bool|char)((?:\[\])*)(?=\s+)' 

18IDENT = r'([a-zA-Z_][a-zA-Z0-9_]*)' 

19DECL = TYPES + r'(\s+)' + IDENT 

20 

21 

22class ArrowLexer(RegexLexer): 

23 """ 

24 Lexer for Arrow 

25 """ 

26 

27 name = 'Arrow' 

28 url = 'https://pypi.org/project/py-arrow-lang/' 

29 aliases = ['arrow'] 

30 filenames = ['*.arw'] 

31 version_added = '2.7' 

32 

33 tokens = { 

34 'root': [ 

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

36 (r'^[|\s]+', Punctuation), 

37 include('blocks'), 

38 include('statements'), 

39 include('expressions'), 

40 ], 

41 'blocks': [ 

42 (r'(function)(\n+)(/-->)(\s*)' + 

43 DECL + # 4 groups 

44 r'(\()', bygroups( 

45 Keyword.Reserved, Whitespace, Punctuation, 

46 Whitespace, Keyword.Type, Punctuation, Whitespace, 

47 Name.Function, Punctuation 

48 ), 'fparams'), 

49 (r'/-->$|\\-->$|/--<|\\--<|\^', Punctuation), 

50 ], 

51 'statements': [ 

52 (DECL, bygroups(Keyword.Type, Punctuation, Text, Name.Variable)), 

53 (r'\[', Punctuation, 'index'), 

54 (r'=', Operator), 

55 (r'require|main', Keyword.Reserved), 

56 (r'print', Keyword.Reserved, 'print'), 

57 ], 

58 'expressions': [ 

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

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

61 (r'true|false', Keyword.Constant), 

62 (r"'", String.Char, 'char'), 

63 (r'"', String.Double, 'string'), 

64 (r'\{', Punctuation, 'array'), 

65 (r'==|!=|<|>|\+|-|\*|/|%', Operator), 

66 (r'and|or|not|length', Operator.Word), 

67 (r'(input)(\s+)(int|char\[\])', bygroups( 

68 Keyword.Reserved, Whitespace, Keyword.Type 

69 )), 

70 (IDENT + r'(\()', bygroups( 

71 Name.Function, Punctuation 

72 ), 'fargs'), 

73 (IDENT, Name.Variable), 

74 (r'\[', Punctuation, 'index'), 

75 (r'\(', Punctuation, 'expressions'), 

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

77 ], 

78 'print': [ 

79 include('expressions'), 

80 (r',', Punctuation), 

81 default('#pop'), 

82 ], 

83 'fparams': [ 

84 (DECL, bygroups(Keyword.Type, Punctuation, Whitespace, Name.Variable)), 

85 (r',', Punctuation), 

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

87 ], 

88 'escape': [ 

89 (r'\\(["\\/abfnrtv]|[0-9]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})', 

90 String.Escape), 

91 ], 

92 'char': [ 

93 (r"'", String.Char, '#pop'), 

94 include('escape'), 

95 (r"[^'\\]", String.Char), 

96 ], 

97 'string': [ 

98 (r'"', String.Double, '#pop'), 

99 include('escape'), 

100 (r'[^"\\]+', String.Double), 

101 ], 

102 'array': [ 

103 include('expressions'), 

104 (r'\}', Punctuation, '#pop'), 

105 (r',', Punctuation), 

106 ], 

107 'fargs': [ 

108 include('expressions'), 

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

110 (r',', Punctuation), 

111 ], 

112 'index': [ 

113 include('expressions'), 

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

115 ], 

116 }