aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Pygments/py3/pygments/lexers/ride.py
blob: 2892ec0264c2a4a1881d2b613611ea5715c32693 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
""" 
    pygments.lexers.ride 
    ~~~~~~~~~~~~~~~~~~~~ 
 
    Lexer for the Ride programming language. 
 
    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. 
    :license: BSD, see LICENSE for details. 
""" 
 
from pygments.lexer import RegexLexer, words, include 
from pygments.token import Comment, Keyword, Name, Number, Punctuation, String, Text 
 
__all__ = ['RideLexer'] 
 
 
class RideLexer(RegexLexer): 
    """ 
    For `Ride <https://docs.wavesplatform.com/en/ride/about-ride.html>`_ 
    source code. 
 
    .. versionadded:: 2.6 
    """ 
 
    name = 'Ride' 
    aliases = ['ride'] 
    filenames = ['*.ride'] 
    mimetypes = ['text/x-ride'] 
 
    validName = r'[a-zA-Z_][a-zA-Z0-9_\']*' 
 
    builtinOps = ( 
        '||', '|', '>=', '>', '==', '!', 
        '=', '<=', '<', '::', ':+', ':', '!=', '/', 
        '.', '=>', '-', '+', '*', '&&', '%', '++', 
    ) 
 
    globalVariablesName = ( 
        'NOALG', 'MD5', 'SHA1', 'SHA224', 'SHA256', 'SHA384', 'SHA512', 
        'SHA3224', 'SHA3256', 'SHA3384', 'SHA3512', 'nil', 'this', 'unit', 
        'height', 'lastBlock', 'Buy', 'Sell', 'CEILING', 'FLOOR', 'DOWN', 
        'HALFDOWN', 'HALFEVEN', 'HALFUP', 'UP', 
    ) 
 
    typesName = ( 
        'Unit', 'Int', 'Boolean', 'ByteVector', 'String', 'Address', 'Alias', 
        'Transfer', 'AssetPair', 'DataEntry', 'Order', 'Transaction', 
        'GenesisTransaction', 'PaymentTransaction', 'ReissueTransaction', 
        'BurnTransaction', 'MassTransferTransaction', 'ExchangeTransaction', 
        'TransferTransaction', 'SetAssetScriptTransaction', 
        'InvokeScriptTransaction', 'IssueTransaction', 'LeaseTransaction', 
        'LeaseCancelTransaction', 'CreateAliasTransaction', 
        'SetScriptTransaction', 'SponsorFeeTransaction', 'DataTransaction', 
        'WriteSet', 'AttachedPayment', 'ScriptTransfer', 'TransferSet', 
        'ScriptResult', 'Invocation', 'Asset', 'BlockInfo', 'Issue', 'Reissue', 
        'Burn', 'NoAlg', 'Md5', 'Sha1', 'Sha224', 'Sha256', 'Sha384', 'Sha512', 
        'Sha3224', 'Sha3256', 'Sha3384', 'Sha3512', 'BinaryEntry', 
        'BooleanEntry', 'IntegerEntry', 'StringEntry', 'List', 'Ceiling', 
        'Down', 'Floor', 'HalfDown', 'HalfEven', 'HalfUp', 'Up', 
    ) 
 
    functionsName = ( 
        'fraction', 'size', 'toBytes', 'take', 'drop', 'takeRight', 'dropRight', 
        'toString', 'isDefined', 'extract', 'throw', 'getElement', 'value', 
        'cons', 'toUtf8String', 'toInt', 'indexOf', 'lastIndexOf', 'split', 
        'parseInt', 'parseIntValue', 'keccak256', 'blake2b256', 'sha256', 
        'sigVerify', 'toBase58String', 'fromBase58String', 'toBase64String', 
        'fromBase64String', 'transactionById', 'transactionHeightById', 
        'getInteger', 'getBoolean', 'getBinary', 'getString', 
        'addressFromPublicKey', 'addressFromString', 'addressFromRecipient', 
        'assetBalance', 'wavesBalance', 'getIntegerValue', 'getBooleanValue', 
        'getBinaryValue', 'getStringValue', 'addressFromStringValue', 
        'assetInfo', 'rsaVerify', 'checkMerkleProof', 'median', 
        'valueOrElse', 'valueOrErrorMessage', 'contains', 'log', 'pow', 
        'toBase16String', 'fromBase16String', 'blockInfoByHeight', 
        'transferTransactionById', 
    ) 
 
    reservedWords = words(( 
        'match', 'case', 'else', 'func', 'if', 
        'let', 'then', '@Callable', '@Verifier', 
    ), suffix=r'\b') 
 
    tokens = { 
        'root': [ 
            # Comments 
            (r'#.*', Comment.Single), 
            # Whitespace 
            (r'\s+', Text), 
            # Strings 
            (r'"', String, 'doublequote'), 
            (r'utf8\'', String, 'utf8quote'), 
            (r'base(58|64|16)\'', String, 'singlequote'), 
            # Keywords 
            (reservedWords, Keyword.Reserved), 
            (r'\{-#.*?#-\}', Keyword.Reserved), 
            (r'FOLD<\d+>', Keyword.Reserved), 
            # Types 
            (words(typesName), Keyword.Type), 
            # Main 
            # (specialName, Keyword.Reserved), 
            # Prefix Operators 
            (words(builtinOps, prefix=r'\(', suffix=r'\)'), Name.Function), 
            # Infix Operators 
            (words(builtinOps), Name.Function), 
            (words(globalVariablesName), Name.Function), 
            (words(functionsName), Name.Function), 
            # Numbers 
            include('numbers'), 
            # Variable Names 
            (validName, Name.Variable), 
            # Parens 
            (r'[,()\[\]{}]', Punctuation), 
        ], 
 
        'doublequote': [ 
            (r'\\u[0-9a-fA-F]{4}', String.Escape), 
            (r'\\[nrfvb\\"]', String.Escape), 
            (r'[^"]', String), 
            (r'"', String, '#pop'), 
        ], 
 
        'utf8quote': [ 
            (r'\\u[0-9a-fA-F]{4}', String.Escape), 
            (r'\\[nrfvb\\\']', String.Escape), 
            (r'[^\']', String), 
            (r'\'', String, '#pop'), 
        ], 
 
        'singlequote': [ 
            (r'[^\']', String), 
            (r'\'', String, '#pop'), 
        ], 
 
        'numbers': [ 
            (r'_?\d+', Number.Integer), 
        ], 
    }