summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/pygments/lexers/fift.py
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.11/site-packages/pygments/lexers/fift.py')
-rw-r--r--venv/lib/python3.11/site-packages/pygments/lexers/fift.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/pygments/lexers/fift.py b/venv/lib/python3.11/site-packages/pygments/lexers/fift.py
new file mode 100644
index 0000000..027175b
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/pygments/lexers/fift.py
@@ -0,0 +1,67 @@
+"""
+ pygments.lexers.fift
+ ~~~~~~~~~~~~~~~~~~~~
+
+ Lexers for fift.
+
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from pygments.lexer import RegexLexer, include
+from pygments.token import Literal, Comment, Name, String, Number, Whitespace
+
+__all__ = ['FiftLexer']
+
+
+class FiftLexer(RegexLexer):
+ """
+ For Fift source code.
+ """
+
+ name = 'Fift'
+ aliases = ['fift', 'fif']
+ filenames = ['*.fif']
+ url = 'https://ton-blockchain.github.io/docs/fiftbase.pdf'
+
+ tokens = {
+ 'root': [
+ (r'\s+', Whitespace),
+
+ include('comments'),
+
+ (r'[\.+]?\"', String, 'string'),
+
+ # numbers
+ (r'0x[0-9a-fA-F]+', Number.Hex),
+ (r'0b[01]+', Number.Bin),
+ (r'-?[0-9]+("/"-?[0-9]+)?', Number.Decimal),
+
+ # slices
+ (r'b\{[01]+\}', Literal),
+ (r'x\{[0-9a-fA-F_]+\}', Literal),
+
+ # byte literal
+ (r'B\{[0-9a-fA-F_]+\}', Literal),
+
+ # treat anything as word
+ (r'\S+', Name)
+ ],
+
+ 'string': [
+ (r'\\.', String.Escape),
+ (r'\"', String, '#pop'),
+ (r'[^\"\r\n\\]+', String)
+ ],
+
+ 'comments': [
+ (r'//.*', Comment.Singleline),
+ (r'/\*', Comment.Multiline, 'comment'),
+ ],
+ 'comment': [
+ (r'[^/*]+', Comment.Multiline),
+ (r'/\*', Comment.Multiline, '#push'),
+ (r'\*/', Comment.Multiline, '#pop'),
+ (r'[*/]', Comment.Multiline),
+ ],
+ }