ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
solidity_grammar.h File Reference

Solidity grammar enumerations and classification helpers. More...

#include <map>
#include <string>
#include <nlohmann/json.hpp>
Include dependency graph for solidity_grammar.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  SolidityGrammar

Enumerations

enum  SolidityGrammar::ContractBodyElementT {
  SolidityGrammar::VarDecl = 0 , SolidityGrammar::FunctionDef , SolidityGrammar::StructDef , SolidityGrammar::EnumDef ,
  SolidityGrammar::ErrorDef , SolidityGrammar::EventDef , SolidityGrammar::UsingForDef , SolidityGrammar::ModifierDef ,
  SolidityGrammar::ContractBodyElementTError
}
enum  SolidityGrammar::TypeNameT {
  SolidityGrammar::ElementaryTypeName = 0 , SolidityGrammar::ParameterList , SolidityGrammar::Pointer , SolidityGrammar::PointerArrayToPtr ,
  SolidityGrammar::ArrayTypeName , SolidityGrammar::DynArrayTypeName , SolidityGrammar::NestedArrayTypeName , SolidityGrammar::AddressTypeName ,
  SolidityGrammar::AddressPayableTypeName , SolidityGrammar::ContractTypeName , SolidityGrammar::TypeConversionName , SolidityGrammar::TypeProperty ,
  SolidityGrammar::EnumTypeName , SolidityGrammar::StructTypeName , SolidityGrammar::TupleTypeName , SolidityGrammar::MappingTypeName ,
  SolidityGrammar::BuiltinTypeName , SolidityGrammar::ErrorTypeName , SolidityGrammar::UserDefinedTypeName , SolidityGrammar::TypeNameTError
}
enum  SolidityGrammar::ElementaryTypeNameT {
  SolidityGrammar::UINT8 , SolidityGrammar::UINT16 , SolidityGrammar::UINT24 , SolidityGrammar::UINT32 ,
  SolidityGrammar::UINT40 , SolidityGrammar::UINT48 , SolidityGrammar::UINT56 , SolidityGrammar::UINT64 ,
  SolidityGrammar::UINT72 , SolidityGrammar::UINT80 , SolidityGrammar::UINT88 , SolidityGrammar::UINT96 ,
  SolidityGrammar::UINT104 , SolidityGrammar::UINT112 , SolidityGrammar::UINT120 , SolidityGrammar::UINT128 ,
  SolidityGrammar::UINT136 , SolidityGrammar::UINT144 , SolidityGrammar::UINT152 , SolidityGrammar::UINT160 ,
  SolidityGrammar::UINT168 , SolidityGrammar::UINT176 , SolidityGrammar::UINT184 , SolidityGrammar::UINT192 ,
  SolidityGrammar::UINT200 , SolidityGrammar::UINT208 , SolidityGrammar::UINT216 , SolidityGrammar::UINT224 ,
  SolidityGrammar::UINT232 , SolidityGrammar::UINT240 , SolidityGrammar::UINT248 , SolidityGrammar::UINT256 ,
  SolidityGrammar::INT_LITERAL , SolidityGrammar::RA_LITERAL , SolidityGrammar::INT8 , SolidityGrammar::INT16 ,
  SolidityGrammar::INT24 , SolidityGrammar::INT32 , SolidityGrammar::INT40 , SolidityGrammar::INT48 ,
  SolidityGrammar::INT56 , SolidityGrammar::INT64 , SolidityGrammar::INT72 , SolidityGrammar::INT80 ,
  SolidityGrammar::INT88 , SolidityGrammar::INT96 , SolidityGrammar::INT104 , SolidityGrammar::INT112 ,
  SolidityGrammar::INT120 , SolidityGrammar::INT128 , SolidityGrammar::INT136 , SolidityGrammar::INT144 ,
  SolidityGrammar::INT152 , SolidityGrammar::INT160 , SolidityGrammar::INT168 , SolidityGrammar::INT176 ,
  SolidityGrammar::INT184 , SolidityGrammar::INT192 , SolidityGrammar::INT200 , SolidityGrammar::INT208 ,
  SolidityGrammar::INT216 , SolidityGrammar::INT224 , SolidityGrammar::INT232 , SolidityGrammar::INT240 ,
  SolidityGrammar::INT248 , SolidityGrammar::INT256 , SolidityGrammar::BOOL , SolidityGrammar::ADDRESS ,
  SolidityGrammar::ADDRESS_PAYABLE , SolidityGrammar::STRING , SolidityGrammar::STRING_LITERAL , SolidityGrammar::BYTES ,
  SolidityGrammar::BYTES1 , SolidityGrammar::BYTES2 , SolidityGrammar::BYTES3 , SolidityGrammar::BYTES4 ,
  SolidityGrammar::BYTES5 , SolidityGrammar::BYTES6 , SolidityGrammar::BYTES7 , SolidityGrammar::BYTES8 ,
  SolidityGrammar::BYTES9 , SolidityGrammar::BYTES10 , SolidityGrammar::BYTES11 , SolidityGrammar::BYTES12 ,
  SolidityGrammar::BYTES13 , SolidityGrammar::BYTES14 , SolidityGrammar::BYTES15 , SolidityGrammar::BYTES16 ,
  SolidityGrammar::BYTES17 , SolidityGrammar::BYTES18 , SolidityGrammar::BYTES19 , SolidityGrammar::BYTES20 ,
  SolidityGrammar::BYTES21 , SolidityGrammar::BYTES22 , SolidityGrammar::BYTES23 , SolidityGrammar::BYTES24 ,
  SolidityGrammar::BYTES25 , SolidityGrammar::BYTES26 , SolidityGrammar::BYTES27 , SolidityGrammar::BYTES28 ,
  SolidityGrammar::BYTES29 , SolidityGrammar::BYTES30 , SolidityGrammar::BYTES31 , SolidityGrammar::BYTES32 ,
  SolidityGrammar::ElementaryTypeNameTError
}
enum  SolidityGrammar::ParameterListT { SolidityGrammar::EMPTY = 0 , SolidityGrammar::ONE_PARAM , SolidityGrammar::MORE_THAN_ONE_PARAM , SolidityGrammar::ParameterListTError }
enum  SolidityGrammar::BlockT {
  SolidityGrammar::Statement = 0 , SolidityGrammar::BlockForStatement , SolidityGrammar::BlockIfStatement , SolidityGrammar::BlockWhileStatement ,
  SolidityGrammar::BlockDoWhileStatement , SolidityGrammar::BlockExpressionStatement , SolidityGrammar::BlockTError
}
enum  SolidityGrammar::StatementT {
  SolidityGrammar::Block = 0 , SolidityGrammar::ExpressionStatement , SolidityGrammar::VariableDeclStatement , SolidityGrammar::ReturnStatement ,
  SolidityGrammar::ForStatement , SolidityGrammar::IfStatement , SolidityGrammar::WhileStatement , SolidityGrammar::DoWhileStatement ,
  SolidityGrammar::StatementTError , SolidityGrammar::ContinueStatement , SolidityGrammar::BreakStatement , SolidityGrammar::RevertStatement ,
  SolidityGrammar::EmitStatement , SolidityGrammar::PlaceholderStatement , SolidityGrammar::TryStatement , SolidityGrammar::InlineAssemblyStatement
}
enum  SolidityGrammar::ExpressionT {
  SolidityGrammar::BinaryOperatorClass = 0 , SolidityGrammar::BO_Assign , SolidityGrammar::BO_Add , SolidityGrammar::BO_Sub ,
  SolidityGrammar::BO_Mul , SolidityGrammar::BO_Div , SolidityGrammar::BO_Rem , SolidityGrammar::BO_Shl ,
  SolidityGrammar::BO_Shr , SolidityGrammar::BO_And , SolidityGrammar::BO_Xor , SolidityGrammar::BO_Or ,
  SolidityGrammar::BO_GT , SolidityGrammar::BO_LT , SolidityGrammar::BO_GE , SolidityGrammar::BO_LE ,
  SolidityGrammar::BO_NE , SolidityGrammar::BO_EQ , SolidityGrammar::BO_LAnd , SolidityGrammar::BO_LOr ,
  SolidityGrammar::BO_AddAssign , SolidityGrammar::BO_SubAssign , SolidityGrammar::BO_MulAssign , SolidityGrammar::BO_DivAssign ,
  SolidityGrammar::BO_RemAssign , SolidityGrammar::BO_ShlAssign , SolidityGrammar::BO_ShrAssign , SolidityGrammar::BO_AndAssign ,
  SolidityGrammar::BO_XorAssign , SolidityGrammar::BO_OrAssign , SolidityGrammar::BO_Pow , SolidityGrammar::UnaryOperatorClass ,
  SolidityGrammar::UO_PreDec , SolidityGrammar::UO_PreInc , SolidityGrammar::UO_PostDec , SolidityGrammar::UO_PostInc ,
  SolidityGrammar::UO_Minus , SolidityGrammar::UO_Not , SolidityGrammar::UO_LNot , SolidityGrammar::UO_Delete ,
  SolidityGrammar::ConditionalOperatorClass , SolidityGrammar::DeclRefExprClass , SolidityGrammar::Literal , SolidityGrammar::LiteralWithRational ,
  SolidityGrammar::LiteralWithWei , SolidityGrammar::LiteralWithGwei , SolidityGrammar::LiteralWithSzabo , SolidityGrammar::LiteralWithFinney ,
  SolidityGrammar::LiteralWithEther , SolidityGrammar::LiteralWithSeconds , SolidityGrammar::LiteralWithMinutes , SolidityGrammar::LiteralWithHours ,
  SolidityGrammar::LiteralWithDays , SolidityGrammar::LiteralWithWeeks , SolidityGrammar::LiteralWithYears , SolidityGrammar::LiteralWithUnknownUnit ,
  SolidityGrammar::Tuple , SolidityGrammar::Mapping , SolidityGrammar::CallExprClass , SolidityGrammar::CallOptionsExprClass ,
  SolidityGrammar::ImplicitCastExprClass , SolidityGrammar::IndexAccess , SolidityGrammar::IndexRangeAccess , SolidityGrammar::NewExpression ,
  SolidityGrammar::NewCallExpression , SolidityGrammar::ContractMemberCall , SolidityGrammar::AddressMemberCall , SolidityGrammar::LibraryMemberCall ,
  SolidityGrammar::TypeConversionExpression , SolidityGrammar::TypePropertyExpression , SolidityGrammar::StructMemberCall , SolidityGrammar::EnumMemberCall ,
  SolidityGrammar::BuiltinMemberCall , SolidityGrammar::TypeMemberCall , SolidityGrammar::NullExpr , SolidityGrammar::ExpressionTError
}
enum  SolidityGrammar::FunctionDeclRefT { SolidityGrammar::FunctionProto = 0 , SolidityGrammar::FunctionNoProto , SolidityGrammar::FunctionDeclRefTError }
enum  SolidityGrammar::ImplicitCastTypeT { SolidityGrammar::LValueToRValue = 0 , SolidityGrammar::FunctionToPointerDecay , SolidityGrammar::ArrayToPointerDecay , SolidityGrammar::ImplicitCastTypeTError }
enum  SolidityGrammar::VisibilityT {
  SolidityGrammar::PublicT , SolidityGrammar::PrivateT , SolidityGrammar::ExternalT , SolidityGrammar::InternalT ,
  SolidityGrammar::UnknownT
}
enum class  SolidityGrammar::SolType {
  SolidityGrammar::UINT8 , SolidityGrammar::UINT16 , SolidityGrammar::UINT24 , SolidityGrammar::UINT32 ,
  SolidityGrammar::UINT40 , SolidityGrammar::UINT48 , SolidityGrammar::UINT56 , SolidityGrammar::UINT64 ,
  SolidityGrammar::UINT72 , SolidityGrammar::UINT80 , SolidityGrammar::UINT88 , SolidityGrammar::UINT96 ,
  SolidityGrammar::UINT104 , SolidityGrammar::UINT112 , SolidityGrammar::UINT120 , SolidityGrammar::UINT128 ,
  SolidityGrammar::UINT136 , SolidityGrammar::UINT144 , SolidityGrammar::UINT152 , SolidityGrammar::UINT160 ,
  SolidityGrammar::UINT168 , SolidityGrammar::UINT176 , SolidityGrammar::UINT184 , SolidityGrammar::UINT192 ,
  SolidityGrammar::UINT200 , SolidityGrammar::UINT208 , SolidityGrammar::UINT216 , SolidityGrammar::UINT224 ,
  SolidityGrammar::UINT232 , SolidityGrammar::UINT240 , SolidityGrammar::UINT248 , SolidityGrammar::UINT256 ,
  SolidityGrammar::INT8 , SolidityGrammar::INT16 , SolidityGrammar::INT24 , SolidityGrammar::INT32 ,
  SolidityGrammar::INT40 , SolidityGrammar::INT48 , SolidityGrammar::INT56 , SolidityGrammar::INT64 ,
  SolidityGrammar::INT72 , SolidityGrammar::INT80 , SolidityGrammar::INT88 , SolidityGrammar::INT96 ,
  SolidityGrammar::INT104 , SolidityGrammar::INT112 , SolidityGrammar::INT120 , SolidityGrammar::INT128 ,
  SolidityGrammar::INT136 , SolidityGrammar::INT144 , SolidityGrammar::INT152 , SolidityGrammar::INT160 ,
  SolidityGrammar::INT168 , SolidityGrammar::INT176 , SolidityGrammar::INT184 , SolidityGrammar::INT192 ,
  SolidityGrammar::INT200 , SolidityGrammar::INT208 , SolidityGrammar::INT216 , SolidityGrammar::INT224 ,
  SolidityGrammar::INT232 , SolidityGrammar::INT240 , SolidityGrammar::INT248 , SolidityGrammar::INT256 ,
  SolidityGrammar::BOOL , SolidityGrammar::ADDRESS , SolidityGrammar::ADDRESS_PAYABLE , SolidityGrammar::STRING ,
  SolidityGrammar::ENUM , SolidityGrammar::BYTES1 , SolidityGrammar::BYTES2 , SolidityGrammar::BYTES3 ,
  SolidityGrammar::BYTES4 , SolidityGrammar::BYTES5 , SolidityGrammar::BYTES6 , SolidityGrammar::BYTES7 ,
  SolidityGrammar::BYTES8 , SolidityGrammar::BYTES9 , SolidityGrammar::BYTES10 , SolidityGrammar::BYTES11 ,
  SolidityGrammar::BYTES12 , SolidityGrammar::BYTES13 , SolidityGrammar::BYTES14 , SolidityGrammar::BYTES15 ,
  SolidityGrammar::BYTES16 , SolidityGrammar::BYTES17 , SolidityGrammar::BYTES18 , SolidityGrammar::BYTES19 ,
  SolidityGrammar::BYTES20 , SolidityGrammar::BYTES21 , SolidityGrammar::BYTES22 , SolidityGrammar::BYTES23 ,
  SolidityGrammar::BYTES24 , SolidityGrammar::BYTES25 , SolidityGrammar::BYTES26 , SolidityGrammar::BYTES27 ,
  SolidityGrammar::BYTES28 , SolidityGrammar::BYTES29 , SolidityGrammar::BYTES30 , SolidityGrammar::BYTES31 ,
  SolidityGrammar::BYTES32 , SolidityGrammar::BYTES_DYN , SolidityGrammar::BYTES_STATIC , SolidityGrammar::INT_CONST ,
  SolidityGrammar::STRING_LITERAL , SolidityGrammar::ARRAY , SolidityGrammar::ARRAY_LITERAL , SolidityGrammar::DYNARRAY ,
  SolidityGrammar::ARRAY_CALLOC , SolidityGrammar::MAPPING , SolidityGrammar::STRUCT , SolidityGrammar::CONTRACT ,
  SolidityGrammar::LIBRARY , SolidityGrammar::TUPLE_RETURNS , SolidityGrammar::TUPLE_INSTANCE , SolidityGrammar::UNSET
}

Functions

ContractBodyElementT SolidityGrammar::get_contract_body_element_t (const nlohmann::json &element)
const char * SolidityGrammar::contract_body_element_to_str (ContractBodyElementT type)
TypeNameT SolidityGrammar::get_type_name_t (const nlohmann::json &type_name)
const char * SolidityGrammar::type_name_to_str (TypeNameT type)
ElementaryTypeNameT SolidityGrammar::get_elementary_type_name_t (const nlohmann::json &type_name)
const char * SolidityGrammar::elementary_type_name_to_str (ElementaryTypeNameT type)
unsigned int SolidityGrammar::uint_type_name_to_size (ElementaryTypeNameT type)
unsigned int SolidityGrammar::int_type_name_to_size (ElementaryTypeNameT type)
unsigned int SolidityGrammar::bytesn_type_name_to_size (ElementaryTypeNameT type)
ParameterListT SolidityGrammar::get_parameter_list_t (const nlohmann::json &type_name)
const char * SolidityGrammar::parameter_list_to_str (ParameterListT type)
BlockT SolidityGrammar::get_block_t (const nlohmann::json &block)
const char * SolidityGrammar::block_to_str (BlockT type)
StatementT SolidityGrammar::get_statement_t (const nlohmann::json &stmt)
const char * SolidityGrammar::statement_to_str (StatementT type)
ExpressionT SolidityGrammar::get_expression_t (const nlohmann::json &expr)
ExpressionT SolidityGrammar::get_expr_operator_t (const nlohmann::json &expr)
ExpressionT SolidityGrammar::get_unary_expr_operator_t (const nlohmann::json &expr, bool uo_pre)
const char * SolidityGrammar::expression_to_str (ExpressionT type)
bool SolidityGrammar::is_address_member_call (const nlohmann::json &expr)
bool SolidityGrammar::is_sol_library_function (const int ref_id)
FunctionDeclRefT SolidityGrammar::get_func_decl_ref_t (const nlohmann::json &decl)
const char * SolidityGrammar::func_decl_ref_to_str (FunctionDeclRefT type)
ImplicitCastTypeT SolidityGrammar::get_implicit_cast_type_t (const std::string &cast)
const char * SolidityGrammar::implicit_cast_type_to_str (ImplicitCastTypeT type)
VisibilityT SolidityGrammar::get_access_t (const nlohmann::json &ast_node)
const char * SolidityGrammar::sol_type_to_str (SolType t)
SolType SolidityGrammar::str_to_sol_type (const std::string &s)
SolType SolidityGrammar::elementary_to_sol_type (ElementaryTypeNameT t)
bool SolidityGrammar::is_uint_type (SolType t)
bool SolidityGrammar::is_int_type (SolType t)
bool SolidityGrammar::is_integer_type (SolType t)
bool SolidityGrammar::is_bytesN_type (SolType t)
bool SolidityGrammar::is_bytes_type (SolType t)
bool SolidityGrammar::is_address_type (SolType t)

Detailed Description

Solidity grammar enumerations and classification helpers.

Defines enums that mirror the Solidity language grammar (type names, operators, statement kinds, expression kinds, etc.) and provides functions to classify solc JSON AST nodes into these categories. Used throughout the converter to dispatch on AST node types.