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

9 statements  

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

1""" 

2 pygments.lexers.fift 

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

4 

5 Lexers for fift. 

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 

12from pygments.token import Literal, Comment, Name, String, Number, Whitespace 

13 

14__all__ = ['FiftLexer'] 

15 

16 

17class FiftLexer(RegexLexer): 

18 """ 

19 For Fift source code. 

20 """ 

21 

22 name = 'Fift' 

23 aliases = ['fift', 'fif'] 

24 filenames = ['*.fif'] 

25 url = 'https://ton-blockchain.github.io/docs/fiftbase.pdf' 

26 

27 tokens = { 

28 'root': [ 

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

30 

31 include('comments'), 

32 

33 (r'[\.+]?\"', String, 'string'), 

34 

35 # numbers 

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

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

38 (r'-?[0-9]+("/"-?[0-9]+)?', Number.Decimal), 

39 

40 # slices 

41 (r'b\{[01]+\}', Literal), 

42 (r'x\{[0-9a-fA-F_]+\}', Literal), 

43 

44 # byte literal 

45 (r'B\{[0-9a-fA-F_]+\}', Literal), 

46 

47 # treat anything as word 

48 (r'\S+', Name) 

49 ], 

50 

51 'string': [ 

52 (r'\\.', String.Escape), 

53 (r'\"', String, '#pop'), 

54 (r'[^\"\r\n\\]+', String) 

55 ], 

56 

57 'comments': [ 

58 (r'//.*', Comment.Singleline), 

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

60 ], 

61 'comment': [ 

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

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

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

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

66 ], 

67 }