9#ifndef SOLIDITY_GRAMMAR_H_
10#define SOLIDITY_GRAMMAR_H_
14#include <nlohmann/json.hpp>
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