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
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:16 +0000
1"""
2 pygments.lexers.fift
3 ~~~~~~~~~~~~~~~~~~~~
5 Lexers for fift.
7 :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9"""
11from pygments.lexer import RegexLexer, include
12from pygments.token import Literal, Comment, Name, String, Number, Whitespace
14__all__ = ['FiftLexer']
17class FiftLexer(RegexLexer):
18 """
19 For Fift source code.
20 """
22 name = 'Fift'
23 aliases = ['fift', 'fif']
24 filenames = ['*.fif']
25 url = 'https://ton-blockchain.github.io/docs/fiftbase.pdf'
27 tokens = {
28 'root': [
29 (r'\s+', Whitespace),
31 include('comments'),
33 (r'[\.+]?\"', String, 'string'),
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),
40 # slices
41 (r'b\{[01]+\}', Literal),
42 (r'x\{[0-9a-fA-F_]+\}', Literal),
44 # byte literal
45 (r'B\{[0-9a-fA-F_]+\}', Literal),
47 # treat anything as word
48 (r'\S+', Name)
49 ],
51 'string': [
52 (r'\\.', String.Escape),
53 (r'\"', String, '#pop'),
54 (r'[^\"\r\n\\]+', String)
55 ],
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 }