12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- """
- 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),
- ],
- }
|