ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
solidity_grammar.h
Go to the documentation of this file.
1
8
9#ifndef SOLIDITY_GRAMMAR_H_
10#define SOLIDITY_GRAMMAR_H_
11
12#include <map>
13#include <string>
14#include <nlohmann/json.hpp>
15
16// Anything auxiliary means it's not in Solidity grammar, but we need it to work
17// with ESBMC's irept
18namespace SolidityGrammar
19{
20// rule contract-body-element
22{
23 VarDecl = 0, // rule variable-declaration
24 FunctionDef, // rule function-definition
25 StructDef, // rule struct-definition
26 EnumDef, // rule enum-definition
27 ErrorDef, // rule error-definition
28 EventDef, // rule event-definition
29 UsingForDef, // rule using-for-directive
30 ModifierDef, // rule modifier-definition
32};
33ContractBodyElementT get_contract_body_element_t(const nlohmann::json &element);
35
36// rule type-name
38{
39 // rule elementary-type-name
41
42 // rule parameter-list. Strictly, this should not be here. Just a workaround
44
45 // auxiliary type for FunctionToPointer decay in CallExpr when making a
46 // function call
47 Pointer, // TODO: Fix me. Rename it to PointerFuncToPtr
48
49 // auxiliary type for ArrayToPointer when dereferencing array, e.g. a[0]
51
52 // static array type
54
55 // dynamic array type
57
58 // Multi-Dimensional Arrays
60
61 // Address type
64
65 // contract type
67
68 // typecast
70
71 // the type() keyword
73
74 // enum
76
77 // struct
79
80 // tuple
82
83 // mapping
85
86 // built-in member
88
89 // error
91
92 // user-defined
94
96};
97TypeNameT get_type_name_t(const nlohmann::json &type_name);
98const char *type_name_to_str(TypeNameT type);
99
100// rule elementary-type-name
102{
103 // rule unsigned-integer-type
136
139 // rule signed-integer-type
172
173 // rule bool
175
176 // rule address
179
180 // rule string
183
184 // rule bytes
218
219 // TODO: rule e
220 // TODO: fixed
221 // TODO: ufixed
223};
224ElementaryTypeNameT get_elementary_type_name_t(const nlohmann::json &type_name);
227
231
232// rule parameter-list
234{
235 EMPTY = 0, // In Solidity, "void" means an empty parameter list
239};
240ParameterListT get_parameter_list_t(const nlohmann::json &type_name);
241const char *parameter_list_to_str(ParameterListT type);
242
243// rule block
254BlockT get_block_t(const nlohmann::json &block);
255const char *block_to_str(BlockT type);
256
257// rule statement
259{
260 Block = 0, // rule block (mutual inclusion)
261 ExpressionStatement, // rule expression-statement
262 VariableDeclStatement, // rule variable-declaration-statement
263 ReturnStatement, // rule return-statement
264 ForStatement, // rule for-statement
265 IfStatement, // rule if-statement
269 ContinueStatement, // rule continue
270 BreakStatement, // rule break
271 RevertStatement, // rule revert
272 EmitStatement, // rule emit
273 PlaceholderStatement, // rule placeholder
274 TryStatement, // rule try
275 InlineAssemblyStatement // rule inline assembly (havoc)
276};
277StatementT get_statement_t(const nlohmann::json &stmt);
278const char *statement_to_str(StatementT type);
279
280// rule expression-statement
281// - Skipped since it just contains 1 type: "expression + ;"
282
283// rule expression
284// these are used to identify the type of the expression
286{
287 // BinaryOperator
288 BinaryOperatorClass = 0, // This type covers all binary operators in Solidity,
289 // such as =, +, - .etc
291 BO_Add, // +
292 BO_Sub, // -
293 BO_Mul, // *
294 BO_Div, // /
295 BO_Rem, // %
296
297 BO_Shl, // <<
298 BO_Shr, // >>
299 BO_And, // &
300 BO_Xor, // ^
301 BO_Or, // |
302
303 BO_GT, // >
304 BO_LT, // <
305 BO_GE, // >=
306 BO_LE, // <=
307 BO_NE, // !=
308 BO_EQ, // ==
309 BO_LAnd, // &&
310 BO_LOr, // ||
311
322 BO_Pow, // **
323
324 // UnaryOperator
331 UO_Not, // ~
333 UO_Delete, // delete
334
335 // ternaryOperator
337
338 // rule identifier
340
341 // rule literal
344
345 // unit literal
351
359
360 // rule Tuple
362
363 // rule Mapping
365
366 // FunctionCall
368
369 // FunctionCallOptions
371
372 // auxiliary type for implicit casting in Solidity, e.g. function return value
373 // Solidity does NOT provide such information.
375
376 // auxiliary type for array's "[]" operator
377 // equivalent to clang::Stmt::ArraySubscriptExprClass
378 // Solidity does NOT provide such rule
380
381 // Array slice access [start:end] on calldata arrays
383
384 // Create a temporary object by keywords 'new'
385 // equivalent to clang::Stmt::CXXTemporaryObjectExprClass
386 // i.e. Base x = new Base(args);
388
389 // Create a temporary object by keywords 'new' with options
390 // i.e. Base x = new Base{value: args}();
392
393 // Call member functions
394 // equivalent toclang::Stmt::CXXMemberCallExprClass
395 // i.e. x.caller();
397
398 // Members of Address Types
399 // see
400 // https://docs.soliditylang.org/en/v0.8.23/units-and-global-variables.html#members-of-address-types
402
403 // library function call
405
406 // Type Converion
408
409 // Type Property
411
412 // Struct Member Access
414
415 // Enum Member Access
417
418 // Built-in Member Access
420
421 // Contract Type Member Access
423
424 // Null Expression
426
428};
429ExpressionT get_expression_t(const nlohmann::json &expr);
430ExpressionT get_expr_operator_t(const nlohmann::json &expr);
432get_unary_expr_operator_t(const nlohmann::json &expr, bool uo_pre = true);
433const char *expression_to_str(ExpressionT type);
434bool is_address_member_call(const nlohmann::json &expr);
435bool is_sol_library_function(const int ref_id);
436
437// auxiliary type to convert function call
438// No corresponding Solidity rules
445FunctionDeclRefT get_func_decl_ref_t(const nlohmann::json &decl);
446const char *func_decl_ref_to_str(FunctionDeclRefT type);
447
448// auxiliary type for implicit casting
450{
451 // for return value casting
453
454 // for ImplicitCastExpr<FunctionToPointerDecay> as in CallExpr when making a
455 // function call
457
458 // for ImplicitCastExpr<ArrayToPointerDecay> as in IndexAccess
460
462};
463ImplicitCastTypeT get_implicit_cast_type_t(const std::string &cast);
465
466// the function visibility
468{
469 // any contract and account can call
471
472 // only inside the contract that defines the function
474
475 // only other contracts and accounts can call
477
478 // only inside contract that inherits an internal function
480
482};
483VisibilityT get_access_t(const nlohmann::json &ast_node);
484
485// Solidity type annotation stored on irep typet objects via #sol_type
486// attribute. Replaces the previous string-based system with a formal enum for
487// type safety.
488enum class SolType
489{
490 // unsigned integers (uint8 – uint256)
523
524 // signed integers (int8 – int256)
557
558 // other value types
564
565 // fixed-size bytes (bytes1 – bytes32)
598
599 // dynamic bytes
600 BYTES_DYN, // dynamic bytes type
601 BYTES_STATIC, // BytesStatic runtime type (from type conversions)
602
603 // literals / constants
606
607 // composite types
614
615 // contract / library
618
619 // tuples (ESBMC internal)
622
623 // default / unset
625};
626
627const char *sol_type_to_str(SolType t);
628SolType str_to_sol_type(const std::string &s);
630
631bool is_uint_type(SolType t);
632bool is_int_type(SolType t);
634bool is_bytesN_type(SolType t);
635bool is_bytes_type(SolType t);
637
638}; // namespace SolidityGrammar
639
640#endif /* SOLIDITY_GRAMMAR_H_ */
Definition solidity_grammar.cpp:21
BlockT get_block_t(const nlohmann::json &block)
Definition solidity_grammar.cpp:624
bool is_address_type(SolType t)
Definition solidity_grammar.cpp:1803
VisibilityT get_access_t(const nlohmann::json &ast_node)
Definition solidity_grammar.cpp:1278
ImplicitCastTypeT get_implicit_cast_type_t(const std::string &cast)
Definition solidity_grammar.cpp:1239
SolType elementary_to_sol_type(ElementaryTypeNameT t)
Definition solidity_grammar.cpp:1564
unsigned int uint_type_name_to_size(ElementaryTypeNameT type)
Definition solidity_grammar.cpp:573
const char * contract_body_element_to_str(ContractBodyElementT type)
Definition solidity_grammar.cpp:142
const char * sol_type_to_str(SolType t)
Definition solidity_grammar.cpp:1313
const char * implicit_cast_type_to_str(ImplicitCastTypeT type)
Definition solidity_grammar.cpp:1262
ExpressionT get_unary_expr_operator_t(const nlohmann::json &expr, bool uo_pre)
Definition solidity_grammar.cpp:936
bool is_bytes_type(SolType t)
Definition solidity_grammar.cpp:1797
ImplicitCastTypeT
Definition solidity_grammar.h:450
@ ArrayToPointerDecay
Definition solidity_grammar.h:459
@ LValueToRValue
Definition solidity_grammar.h:452
@ ImplicitCastTypeTError
Definition solidity_grammar.h:461
@ FunctionToPointerDecay
Definition solidity_grammar.h:456
const char * type_name_to_str(TypeNameT type)
Definition solidity_grammar.cpp:351
SolType
Definition solidity_grammar.h:489
@ BYTES_DYN
Definition solidity_grammar.h:600
@ CONTRACT
Definition solidity_grammar.h:616
@ MAPPING
Definition solidity_grammar.h:612
@ INT_CONST
Definition solidity_grammar.h:604
@ UNSET
Definition solidity_grammar.h:624
@ ENUM
Definition solidity_grammar.h:563
@ ARRAY_LITERAL
Definition solidity_grammar.h:609
@ BYTES_STATIC
Definition solidity_grammar.h:601
@ STRUCT
Definition solidity_grammar.h:613
@ DYNARRAY
Definition solidity_grammar.h:610
@ LIBRARY
Definition solidity_grammar.h:617
@ ARRAY
Definition solidity_grammar.h:608
@ TUPLE_RETURNS
Definition solidity_grammar.h:620
@ TUPLE_INSTANCE
Definition solidity_grammar.h:621
@ ARRAY_CALLOC
Definition solidity_grammar.h:611
bool is_integer_type(SolType t)
Definition solidity_grammar.cpp:1787
FunctionDeclRefT
Definition solidity_grammar.h:440
@ FunctionDeclRefTError
Definition solidity_grammar.h:443
@ FunctionNoProto
Definition solidity_grammar.h:442
@ FunctionProto
Definition solidity_grammar.h:441
StatementT
Definition solidity_grammar.h:259
@ PlaceholderStatement
Definition solidity_grammar.h:273
@ RevertStatement
Definition solidity_grammar.h:271
@ ContinueStatement
Definition solidity_grammar.h:269
@ EmitStatement
Definition solidity_grammar.h:272
@ VariableDeclStatement
Definition solidity_grammar.h:262
@ DoWhileStatement
Definition solidity_grammar.h:267
@ InlineAssemblyStatement
Definition solidity_grammar.h:275
@ IfStatement
Definition solidity_grammar.h:265
@ ForStatement
Definition solidity_grammar.h:264
@ TryStatement
Definition solidity_grammar.h:274
@ Block
Definition solidity_grammar.h:260
@ WhileStatement
Definition solidity_grammar.h:266
@ ReturnStatement
Definition solidity_grammar.h:263
@ StatementTError
Definition solidity_grammar.h:268
@ BreakStatement
Definition solidity_grammar.h:270
@ ExpressionStatement
Definition solidity_grammar.h:261
const char * elementary_type_name_to_str(ElementaryTypeNameT type)
Definition solidity_grammar.cpp:456
bool is_int_type(SolType t)
Definition solidity_grammar.cpp:1782
unsigned int bytesn_type_name_to_size(ElementaryTypeNameT type)
Definition solidity_grammar.cpp:583
BlockT
Definition solidity_grammar.h:245
@ BlockTError
Definition solidity_grammar.h:252
@ BlockIfStatement
Definition solidity_grammar.h:248
@ BlockExpressionStatement
Definition solidity_grammar.h:251
@ Statement
Definition solidity_grammar.h:246
@ BlockWhileStatement
Definition solidity_grammar.h:249
@ BlockDoWhileStatement
Definition solidity_grammar.h:250
@ BlockForStatement
Definition solidity_grammar.h:247
SolType str_to_sol_type(const std::string &s)
Definition solidity_grammar.cpp:1441
bool is_bytesN_type(SolType t)
Definition solidity_grammar.cpp:1792
ElementaryTypeNameT get_elementary_type_name_t(const nlohmann::json &type_name)
Definition solidity_grammar.cpp:385
bool is_address_member_call(const nlohmann::json &expr)
Definition solidity_grammar.cpp:164
bool is_uint_type(SolType t)
Definition solidity_grammar.cpp:1777
ParameterListT
Definition solidity_grammar.h:234
@ MORE_THAN_ONE_PARAM
Definition solidity_grammar.h:237
@ ONE_PARAM
Definition solidity_grammar.h:236
@ ParameterListTError
Definition solidity_grammar.h:238
@ EMPTY
Definition solidity_grammar.h:235
ContractBodyElementT
Definition solidity_grammar.h:22
@ VarDecl
Definition solidity_grammar.h:23
@ ContractBodyElementTError
Definition solidity_grammar.h:31
@ ErrorDef
Definition solidity_grammar.h:27
@ ModifierDef
Definition solidity_grammar.h:30
@ EnumDef
Definition solidity_grammar.h:26
@ EventDef
Definition solidity_grammar.h:28
@ FunctionDef
Definition solidity_grammar.h:24
@ StructDef
Definition solidity_grammar.h:25
@ UsingForDef
Definition solidity_grammar.h:29
ExpressionT get_expression_t(const nlohmann::json &expr)
Definition solidity_grammar.cpp:781
ParameterListT get_parameter_list_t(const nlohmann::json &type_name)
Definition solidity_grammar.cpp:589
ElementaryTypeNameT
Definition solidity_grammar.h:102
@ INT240
Definition solidity_grammar.h:169
@ INT32
Definition solidity_grammar.h:143
@ BYTES32
Definition solidity_grammar.h:217
@ UINT144
Definition solidity_grammar.h:121
@ UINT208
Definition solidity_grammar.h:129
@ BYTES3
Definition solidity_grammar.h:188
@ UINT240
Definition solidity_grammar.h:133
@ INT56
Definition solidity_grammar.h:146
@ BYTES19
Definition solidity_grammar.h:204
@ UINT232
Definition solidity_grammar.h:132
@ BYTES22
Definition solidity_grammar.h:207
@ UINT104
Definition solidity_grammar.h:116
@ BYTES7
Definition solidity_grammar.h:192
@ UINT136
Definition solidity_grammar.h:120
@ INT256
Definition solidity_grammar.h:171
@ UINT72
Definition solidity_grammar.h:112
@ INT248
Definition solidity_grammar.h:170
@ INT64
Definition solidity_grammar.h:147
@ INT232
Definition solidity_grammar.h:168
@ BYTES
Definition solidity_grammar.h:185
@ BYTES9
Definition solidity_grammar.h:194
@ UINT112
Definition solidity_grammar.h:117
@ UINT8
Definition solidity_grammar.h:104
@ INT_LITERAL
Definition solidity_grammar.h:137
@ INT184
Definition solidity_grammar.h:162
@ INT152
Definition solidity_grammar.h:158
@ BYTES12
Definition solidity_grammar.h:197
@ UINT80
Definition solidity_grammar.h:113
@ BYTES31
Definition solidity_grammar.h:216
@ BYTES14
Definition solidity_grammar.h:199
@ UINT48
Definition solidity_grammar.h:109
@ BYTES5
Definition solidity_grammar.h:190
@ STRING_LITERAL
Definition solidity_grammar.h:182
@ INT160
Definition solidity_grammar.h:159
@ INT136
Definition solidity_grammar.h:156
@ INT96
Definition solidity_grammar.h:151
@ INT168
Definition solidity_grammar.h:160
@ UINT16
Definition solidity_grammar.h:105
@ BOOL
Definition solidity_grammar.h:174
@ UINT96
Definition solidity_grammar.h:115
@ BYTES17
Definition solidity_grammar.h:202
@ UINT184
Definition solidity_grammar.h:126
@ UINT224
Definition solidity_grammar.h:131
@ INT216
Definition solidity_grammar.h:166
@ INT120
Definition solidity_grammar.h:154
@ UINT168
Definition solidity_grammar.h:124
@ BYTES26
Definition solidity_grammar.h:211
@ ElementaryTypeNameTError
Definition solidity_grammar.h:222
@ INT40
Definition solidity_grammar.h:144
@ INT104
Definition solidity_grammar.h:152
@ STRING
Definition solidity_grammar.h:181
@ INT176
Definition solidity_grammar.h:161
@ BYTES20
Definition solidity_grammar.h:205
@ INT80
Definition solidity_grammar.h:149
@ UINT24
Definition solidity_grammar.h:106
@ ADDRESS_PAYABLE
Definition solidity_grammar.h:178
@ RA_LITERAL
Definition solidity_grammar.h:138
@ BYTES2
Definition solidity_grammar.h:187
@ UINT88
Definition solidity_grammar.h:114
@ BYTES28
Definition solidity_grammar.h:213
@ UINT120
Definition solidity_grammar.h:118
@ UINT128
Definition solidity_grammar.h:119
@ INT8
Definition solidity_grammar.h:140
@ BYTES30
Definition solidity_grammar.h:215
@ UINT192
Definition solidity_grammar.h:127
@ BYTES1
Definition solidity_grammar.h:186
@ INT48
Definition solidity_grammar.h:145
@ BYTES10
Definition solidity_grammar.h:195
@ BYTES4
Definition solidity_grammar.h:189
@ BYTES15
Definition solidity_grammar.h:200
@ BYTES18
Definition solidity_grammar.h:203
@ INT16
Definition solidity_grammar.h:141
@ BYTES29
Definition solidity_grammar.h:214
@ UINT248
Definition solidity_grammar.h:134
@ BYTES6
Definition solidity_grammar.h:191
@ BYTES27
Definition solidity_grammar.h:212
@ UINT256
Definition solidity_grammar.h:135
@ INT24
Definition solidity_grammar.h:142
@ INT128
Definition solidity_grammar.h:155
@ BYTES11
Definition solidity_grammar.h:196
@ INT72
Definition solidity_grammar.h:148
@ INT112
Definition solidity_grammar.h:153
@ INT192
Definition solidity_grammar.h:163
@ INT144
Definition solidity_grammar.h:157
@ BYTES23
Definition solidity_grammar.h:208
@ UINT40
Definition solidity_grammar.h:108
@ UINT56
Definition solidity_grammar.h:110
@ BYTES16
Definition solidity_grammar.h:201
@ UINT160
Definition solidity_grammar.h:123
@ BYTES25
Definition solidity_grammar.h:210
@ INT208
Definition solidity_grammar.h:165
@ BYTES21
Definition solidity_grammar.h:206
@ INT200
Definition solidity_grammar.h:164
@ INT224
Definition solidity_grammar.h:167
@ INT88
Definition solidity_grammar.h:150
@ BYTES24
Definition solidity_grammar.h:209
@ UINT176
Definition solidity_grammar.h:125
@ BYTES8
Definition solidity_grammar.h:193
@ UINT32
Definition solidity_grammar.h:107
@ ADDRESS
Definition solidity_grammar.h:177
@ UINT200
Definition solidity_grammar.h:128
@ BYTES13
Definition solidity_grammar.h:198
@ UINT216
Definition solidity_grammar.h:130
@ UINT152
Definition solidity_grammar.h:122
@ UINT64
Definition solidity_grammar.h:111
StatementT get_statement_t(const nlohmann::json &stmt)
Definition solidity_grammar.cpp:680
VisibilityT
Definition solidity_grammar.h:468
@ PrivateT
Definition solidity_grammar.h:473
@ InternalT
Definition solidity_grammar.h:479
@ PublicT
Definition solidity_grammar.h:470
@ UnknownT
Definition solidity_grammar.h:481
@ ExternalT
Definition solidity_grammar.h:476
const char * func_decl_ref_to_str(FunctionDeclRefT type)
Definition solidity_grammar.cpp:1223
const char * statement_to_str(StatementT type)
Definition solidity_grammar.cpp:752
TypeNameT
Definition solidity_grammar.h:38
@ NestedArrayTypeName
Definition solidity_grammar.h:59
@ StructTypeName
Definition solidity_grammar.h:78
@ AddressPayableTypeName
Definition solidity_grammar.h:63
@ ArrayTypeName
Definition solidity_grammar.h:53
@ EnumTypeName
Definition solidity_grammar.h:75
@ ContractTypeName
Definition solidity_grammar.h:66
@ AddressTypeName
Definition solidity_grammar.h:62
@ PointerArrayToPtr
Definition solidity_grammar.h:50
@ ElementaryTypeName
Definition solidity_grammar.h:40
@ DynArrayTypeName
Definition solidity_grammar.h:56
@ UserDefinedTypeName
Definition solidity_grammar.h:93
@ TupleTypeName
Definition solidity_grammar.h:81
@ TypeProperty
Definition solidity_grammar.h:72
@ MappingTypeName
Definition solidity_grammar.h:84
@ TypeConversionName
Definition solidity_grammar.h:69
@ TypeNameTError
Definition solidity_grammar.h:95
@ ParameterList
Definition solidity_grammar.h:43
@ Pointer
Definition solidity_grammar.h:47
@ BuiltinTypeName
Definition solidity_grammar.h:87
@ ErrorTypeName
Definition solidity_grammar.h:90
TypeNameT get_type_name_t(const nlohmann::json &type_name)
Definition solidity_grammar.cpp:202
ExpressionT
Definition solidity_grammar.h:286
@ UO_PreInc
Definition solidity_grammar.h:327
@ LiteralWithYears
Definition solidity_grammar.h:357
@ IndexAccess
Definition solidity_grammar.h:379
@ BO_Mul
Definition solidity_grammar.h:293
@ DeclRefExprClass
Definition solidity_grammar.h:339
@ ImplicitCastExprClass
Definition solidity_grammar.h:374
@ LiteralWithSeconds
Definition solidity_grammar.h:352
@ BO_LT
Definition solidity_grammar.h:304
@ Literal
Definition solidity_grammar.h:342
@ BO_RemAssign
Definition solidity_grammar.h:316
@ LiteralWithGwei
Definition solidity_grammar.h:347
@ BO_GE
Definition solidity_grammar.h:305
@ LiteralWithFinney
Definition solidity_grammar.h:349
@ BO_EQ
Definition solidity_grammar.h:308
@ LiteralWithHours
Definition solidity_grammar.h:354
@ NewCallExpression
Definition solidity_grammar.h:391
@ BO_Pow
Definition solidity_grammar.h:322
@ BO_Or
Definition solidity_grammar.h:301
@ Tuple
Definition solidity_grammar.h:361
@ LiteralWithUnknownUnit
Definition solidity_grammar.h:358
@ TypeConversionExpression
Definition solidity_grammar.h:407
@ BO_Rem
Definition solidity_grammar.h:295
@ LiteralWithSzabo
Definition solidity_grammar.h:348
@ BO_AddAssign
Definition solidity_grammar.h:312
@ LiteralWithDays
Definition solidity_grammar.h:355
@ LibraryMemberCall
Definition solidity_grammar.h:404
@ BinaryOperatorClass
Definition solidity_grammar.h:288
@ BO_Shr
Definition solidity_grammar.h:298
@ BO_ShlAssign
Definition solidity_grammar.h:317
@ ExpressionTError
Definition solidity_grammar.h:427
@ NullExpr
Definition solidity_grammar.h:425
@ UO_PostInc
Definition solidity_grammar.h:329
@ NewExpression
Definition solidity_grammar.h:387
@ LiteralWithMinutes
Definition solidity_grammar.h:353
@ UO_Delete
Definition solidity_grammar.h:333
@ AddressMemberCall
Definition solidity_grammar.h:401
@ BO_Assign
Definition solidity_grammar.h:290
@ BO_GT
Definition solidity_grammar.h:303
@ BO_OrAssign
Definition solidity_grammar.h:321
@ BO_DivAssign
Definition solidity_grammar.h:315
@ BO_LOr
Definition solidity_grammar.h:310
@ BO_SubAssign
Definition solidity_grammar.h:313
@ CallExprClass
Definition solidity_grammar.h:367
@ BO_Sub
Definition solidity_grammar.h:292
@ BO_MulAssign
Definition solidity_grammar.h:314
@ LiteralWithWeeks
Definition solidity_grammar.h:356
@ UO_Minus
Definition solidity_grammar.h:330
@ ConditionalOperatorClass
Definition solidity_grammar.h:336
@ BO_LAnd
Definition solidity_grammar.h:309
@ LiteralWithRational
Definition solidity_grammar.h:343
@ UO_PreDec
Definition solidity_grammar.h:326
@ UO_PostDec
Definition solidity_grammar.h:328
@ UO_LNot
Definition solidity_grammar.h:332
@ LiteralWithWei
Definition solidity_grammar.h:346
@ TypePropertyExpression
Definition solidity_grammar.h:410
@ UnaryOperatorClass
Definition solidity_grammar.h:325
@ BO_LE
Definition solidity_grammar.h:306
@ UO_Not
Definition solidity_grammar.h:331
@ BO_NE
Definition solidity_grammar.h:307
@ TypeMemberCall
Definition solidity_grammar.h:422
@ LiteralWithEther
Definition solidity_grammar.h:350
@ BO_And
Definition solidity_grammar.h:299
@ BO_Xor
Definition solidity_grammar.h:300
@ ContractMemberCall
Definition solidity_grammar.h:396
@ StructMemberCall
Definition solidity_grammar.h:413
@ Mapping
Definition solidity_grammar.h:364
@ IndexRangeAccess
Definition solidity_grammar.h:382
@ BO_AndAssign
Definition solidity_grammar.h:319
@ BuiltinMemberCall
Definition solidity_grammar.h:419
@ BO_Add
Definition solidity_grammar.h:291
@ BO_Shl
Definition solidity_grammar.h:297
@ BO_XorAssign
Definition solidity_grammar.h:320
@ EnumMemberCall
Definition solidity_grammar.h:416
@ BO_Div
Definition solidity_grammar.h:294
@ CallOptionsExprClass
Definition solidity_grammar.h:370
@ BO_ShrAssign
Definition solidity_grammar.h:318
const char * expression_to_str(ExpressionT type)
Definition solidity_grammar.cpp:1111
FunctionDeclRefT get_func_decl_ref_t(const nlohmann::json &decl)
Definition solidity_grammar.cpp:1205
bool is_sol_library_function(const int ref_id)
Definition solidity_grammar.cpp:183
unsigned int int_type_name_to_size(ElementaryTypeNameT type)
Definition solidity_grammar.cpp:578
const char * parameter_list_to_str(ParameterListT type)
Definition solidity_grammar.cpp:607
const char * block_to_str(BlockT type)
Definition solidity_grammar.cpp:660
ExpressionT get_expr_operator_t(const nlohmann::json &expr)
Definition solidity_grammar.cpp:978
ContractBodyElementT get_contract_body_element_t(const nlohmann::json &element)
Definition solidity_grammar.cpp:94