libTriton  version 0.4 build 1356
Modules | Namespaces | Classes | Enumerations | Functions
Collaboration diagram for Ast:

Modules

 Representations
 

Namespaces

 triton::ast::representations
 The Representations namespace.
 

Classes

class  triton::ast::AbstractNode
 Abstract node. More...
 
class  triton::ast::AssertNode
 (assert <expr1>) node More...
 
class  triton::ast::BvaddNode
 (bvadd <expr1> <expr2>) node More...
 
class  triton::ast::BvandNode
 (bvand <expr1> <expr2>) node More...
 
class  triton::ast::BvashrNode
 (bvashr <expr1> <expr2>) node More...
 
class  triton::ast::BvdeclNode
 (_ BitVec x) node More...
 
class  triton::ast::BvlshrNode
 (bvlshr <expr1> <expr2>) node More...
 
class  triton::ast::BvmulNode
 (bvmul <expr1> <expr2>) node More...
 
class  triton::ast::BvnandNode
 (bvnand <expr1> <expr2>) node More...
 
class  triton::ast::BvnegNode
 (bvneg <expr>) node More...
 
class  triton::ast::BvnorNode
 (bvnor <expr1> <expr2>) node More...
 
class  triton::ast::BvnotNode
 (bvnot <expr>) node More...
 
class  triton::ast::BvorNode
 (bvor <expr1> <expr2>) node More...
 
class  triton::ast::BvrolNode
 ((_ rotate_left rot) <expr>) node More...
 
class  triton::ast::BvrorNode
 ((_ rotate_right rot) <expr>) node More...
 
class  triton::ast::BvsdivNode
 (bvsdiv <expr1> <expr2>) node More...
 
class  triton::ast::BvsgeNode
 (bvsge <expr1> <expr2>) node More...
 
class  triton::ast::BvsgtNode
 (bvsgt <expr1> <expr2>) node More...
 
class  triton::ast::BvshlNode
 (bvshl <expr1> <expr2>) node More...
 
class  triton::ast::BvsleNode
 (bvsle <expr1> <expr2>) node More...
 
class  triton::ast::BvsltNode
 (bvslt <expr1> <expr2>) node More...
 
class  triton::ast::BvsmodNode
 (bvsmod <expr1> <expr2>) node More...
 
class  triton::ast::BvsremNode
 (bvsrem <expr1> <expr2>) node More...
 
class  triton::ast::BvsubNode
 (bvsub <expr1> <expr2>) node More...
 
class  triton::ast::BvudivNode
 (bvudiv <expr1> <expr2>) node More...
 
class  triton::ast::BvugeNode
 (bvuge <expr1> <expr2>) node More...
 
class  triton::ast::BvugtNode
 (bvugt <expr1> <expr2>) node More...
 
class  triton::ast::BvuleNode
 (bvule <expr1> <expr2>) node More...
 
class  triton::ast::BvultNode
 (bvult <expr1> <expr2>) node More...
 
class  triton::ast::BvuremNode
 (bvurem <expr1> <expr2>) node More...
 
class  triton::ast::BvxnorNode
 (bvxnor <expr1> <expr2>) node More...
 
class  triton::ast::BvxorNode
 (bvxor <expr1> <expr2>) node More...
 
class  triton::ast::BvNode
 (_ bv<value> <size>) node More...
 
class  triton::ast::CompoundNode
 compound node More...
 
class  triton::ast::ConcatNode
 (concat <expr1> <expr2> ...) node More...
 
class  triton::ast::DecimalNode
 Decimal node. More...
 
class  triton::ast::DeclareFunctionNode
 (declare-fun <name> () bvDecl) node More...
 
class  triton::ast::DistinctNode
 (distinct <expr1> <expr2> ...) node More...
 
class  triton::ast::EqualNode
 (= <expr1> <expr2> ...) node More...
 
class  triton::ast::ExtractNode
 ((_ extract <high> <low>) <expr>) node More...
 
class  triton::ast::IteNode
 (ite <ifExpr> <thenExpr> <elseExpr>) More...
 
class  triton::ast::LandNode
 (and <expr1> <expr2>) More...
 
class  triton::ast::LetNode
 (let ((<alias> <expr2>)) <expr3>) More...
 
class  triton::ast::LnotNode
 (lnot <expr>) More...
 
class  triton::ast::LorNode
 (or <expr1> <expr2>) More...
 
class  triton::ast::ReferenceNode
 Reference node. More...
 
class  triton::ast::StringNode
 String node. More...
 
class  triton::ast::SxNode
 ((_ sign_extend sizeExt) <expr>) node More...
 
class  triton::ast::VariableNode
 Variable node. More...
 
class  triton::ast::ZxNode
 ((_ zero_extend sizeExt) <expr>) node More...
 
class  triton::ast::AstDictionaries
 The AST dictionaries class. More...
 
class  triton::ast::AstGarbageCollector
 The AST garbage collector class. More...
 
interface  triton::ast::AstVisitor
 This interface is used to go through the ast AST. More...
 
class  triton::ast::TritonToZ3Ast
 Converts a Triton's AST to Z3's AST. More...
 
class  triton::ast::Z3Interface
 The interface between Triton and Z3. More...
 
class  triton::ast::Z3Result
 The result class. More...
 
class  triton::ast::Z3ToTritonAst
 Converts a Z3's AST to a Triton's AST. More...
 

Enumerations

enum  triton::ast::kind_e {
  triton::ast::UNDEFINED_NODE = 0, triton::ast::ASSERT_NODE = 2, triton::ast::BVADD_NODE = 3, triton::ast::BVAND_NODE = 5,
  triton::ast::BVASHR_NODE = 7, triton::ast::BVDECL_NODE = 11, triton::ast::BVLSHR_NODE = 13, triton::ast::BVMUL_NODE = 17,
  triton::ast::BVNAND_NODE = 19, triton::ast::BVNEG_NODE = 23, triton::ast::BVNOR_NODE = 29, triton::ast::BVNOT_NODE = 31,
  triton::ast::BVOR_NODE = 37, triton::ast::BVROL_NODE = 41, triton::ast::BVROR_NODE = 43, triton::ast::BVSDIV_NODE = 47,
  triton::ast::BVSGE_NODE = 53, triton::ast::BVSGT_NODE = 59, triton::ast::BVSHL_NODE = 61, triton::ast::BVSLE_NODE = 67,
  triton::ast::BVSLT_NODE = 71, triton::ast::BVSMOD_NODE = 73, triton::ast::BVSREM_NODE = 79, triton::ast::BVSUB_NODE = 83,
  triton::ast::BVUDIV_NODE = 89, triton::ast::BVUGE_NODE = 97, triton::ast::BVUGT_NODE = 101, triton::ast::BVULE_NODE = 103,
  triton::ast::BVULT_NODE = 107, triton::ast::BVUREM_NODE = 109, triton::ast::BVXNOR_NODE = 113, triton::ast::BVXOR_NODE = 127,
  triton::ast::BV_NODE = 131, triton::ast::COMPOUND_NODE = 139, triton::ast::CONCAT_NODE = 149, triton::ast::DECIMAL_NODE = 151,
  triton::ast::DECLARE_FUNCTION_NODE = 157, triton::ast::DISTINCT_NODE = 163, triton::ast::EQUAL_NODE = 167, triton::ast::EXTRACT_NODE = 173,
  triton::ast::FUNCTION_NODE = 179, triton::ast::ITE_NODE = 181, triton::ast::LAND_NODE = 191, triton::ast::LET_NODE = 193,
  triton::ast::LNOT_NODE = 197, triton::ast::LOR_NODE = 199, triton::ast::PARAM_NODE = 211, triton::ast::REFERENCE_NODE = 223,
  triton::ast::STRING_NODE = 227, triton::ast::SX_NODE = 229, triton::ast::VARIABLE_NODE = 233, triton::ast::ZX_NODE = 239
}
 

Functions

std::ostream & triton::ast::operator<< (std::ostream &stream, AbstractNode *node)
 Displays the node in ast representation.
 
bool triton::ast::operator== (AbstractNode &node1, AbstractNode &node2)
 Compares two trees.
 
AbstractNodetriton::ast::bv (triton::uint512 value, triton::uint32 size)
 AST C++ API - bv node builder.
 
AbstractNodetriton::ast::bvadd (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvadd node builder.
 
AbstractNodetriton::ast::bvand (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvand node builder.
 
AbstractNodetriton::ast::bvashr (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvashr node builder.
 
AbstractNodetriton::ast::bvdecl (triton::uint32 size)
 AST C++ API - bvdecl node builder.
 
AbstractNodetriton::ast::bvfalse (void)
 AST C++ API - bvfalse node builder.
 
AbstractNodetriton::ast::bvlshr (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvlshr node builder.
 
AbstractNodetriton::ast::bvmul (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvmul node builder.
 
AbstractNodetriton::ast::bvnand (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvnand node builder.
 
AbstractNodetriton::ast::bvneg (AbstractNode *expr)
 AST C++ API - bvneg node builder.
 
AbstractNodetriton::ast::bvnor (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvnor node builder.
 
AbstractNodetriton::ast::bvnot (AbstractNode *expr)
 AST C++ API - bvnot node builder.
 
AbstractNodetriton::ast::bvor (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvor node builder.
 
AbstractNodetriton::ast::bvrol (triton::uint32 rot, AbstractNode *expr)
 AST C++ API - bvrol node builder.
 
AbstractNodetriton::ast::bvrol (AbstractNode *rot, AbstractNode *expr)
 AST C++ API - bvrol node builder.
 
AbstractNodetriton::ast::bvror (triton::uint32 rot, AbstractNode *expr)
 AST C++ API - bvror node builder.
 
AbstractNodetriton::ast::bvror (AbstractNode *rot, AbstractNode *expr)
 AST C++ API - bvror node builder.
 
AbstractNodetriton::ast::bvsdiv (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvsdiv node builder.
 
AbstractNodetriton::ast::bvsge (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvsge node builder.
 
AbstractNodetriton::ast::bvsgt (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvsgt node builder.
 
AbstractNodetriton::ast::bvshl (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvshl node builder.
 
AbstractNodetriton::ast::bvsle (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvsle node builder.
 
AbstractNodetriton::ast::bvslt (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvslt node builder.
 
AbstractNodetriton::ast::bvsmod (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvsmod node builder.
 
AbstractNodetriton::ast::bvsrem (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvsrem node builder.
 
AbstractNodetriton::ast::bvsub (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvsub node builder.
 
AbstractNodetriton::ast::bvtrue (void)
 AST C++ API - bvtrue node builder.
 
AbstractNodetriton::ast::bvudiv (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvudiv node builder.
 
AbstractNodetriton::ast::bvuge (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvuge node builder.
 
AbstractNodetriton::ast::bvugt (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvugt node builder.
 
AbstractNodetriton::ast::bvule (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvule node builder.
 
AbstractNodetriton::ast::bvult (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvult node builder.
 
AbstractNodetriton::ast::bvurem (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvurem node builder.
 
AbstractNodetriton::ast::bvxnor (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvxnor node builder.
 
AbstractNodetriton::ast::bvxor (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - bvxor node builder.
 
AbstractNodetriton::ast::compound (std::vector< AbstractNode * > exprs)
 AST C++ API - compound node builder.
 
AbstractNodetriton::ast::concat (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - concat node builder.
 
AbstractNodetriton::ast::concat (std::vector< AbstractNode * > exprs)
 AST C++ API - concat node builder.
 
AbstractNodetriton::ast::concat (std::list< AbstractNode * > exprs)
 AST C++ API - concat node builder.
 
AbstractNodetriton::ast::decimal (triton::uint512 value)
 AST C++ API - decimal node builder.
 
AbstractNodetriton::ast::declareFunction (std::string name, AbstractNode *bvDecl)
 AST C++ API - declare node builder.
 
AbstractNodetriton::ast::distinct (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - distinct node builder.
 
AbstractNodetriton::ast::equal (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - equal node builder.
 
AbstractNodetriton::ast::extract (triton::uint32 high, triton::uint32 low, AbstractNode *expr)
 AST C++ API - extract node builder.
 
AbstractNodetriton::ast::ite (AbstractNode *ifExpr, AbstractNode *thenExpr, AbstractNode *elseExpr)
 AST C++ API - ite node builder.
 
AbstractNodetriton::ast::land (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - land node builder.
 
AbstractNodetriton::ast::let (std::string alias, AbstractNode *expr2, AbstractNode *expr3)
 AST C++ API - let node builder.
 
AbstractNodetriton::ast::lnot (AbstractNode *expr)
 AST C++ API - lnot node builder.
 
AbstractNodetriton::ast::lor (AbstractNode *expr1, AbstractNode *expr2)
 AST C++ API - lor node builder.
 
AbstractNodetriton::ast::reference (triton::usize value)
 AST C++ API - reference node builder.
 
AbstractNodetriton::ast::assert_ (AbstractNode *expr)
 AST C++ API - assert node builder.
 
AbstractNodetriton::ast::string (std::string value)
 AST C++ API - string node builder.
 
AbstractNodetriton::ast::sx (triton::uint32 sizeExt, AbstractNode *expr)
 AST C++ API - sx node builder.
 
AbstractNodetriton::ast::variable (triton::engines::symbolic::SymbolicVariable &symVar)
 AST C++ API - variable node builder.
 
AbstractNodetriton::ast::zx (triton::uint32 sizeExt, AbstractNode *expr)
 AST C++ API - zx node builder.
 
AbstractNodetriton::ast::newInstance (AbstractNode *node)
 AST C++ API - Duplicates the AST.
 
triton::uint512 triton::ast::pow (triton::uint512 hash, triton::uint32 n)
 Custom pow function for hash routine.
 
triton::uint512 triton::ast::rotl (triton::uint512 value, triton::uint32 shift)
 Custom rotate left function for hash routine.
 
triton::sint512 triton::ast::modularSignExtend (AbstractNode *node)
 Custom modular sign extend for bitwise operation.
 

Detailed Description

Enumeration Type Documentation

◆ kind_e

Enumerates all kinds of node. Must be prime numbers.

Enumerator
UNDEFINED_NODE 

Unknown node

ASSERT_NODE 

(assert x)

BVADD_NODE 

(bvadd x y)

BVAND_NODE 

(bvand x y)

BVASHR_NODE 

(bvashr x y)

BVDECL_NODE 

(_ BitVec x)

BVLSHR_NODE 

(bvlshr x y)

BVMUL_NODE 

(bvmul x y)

BVNAND_NODE 

(bvnand x y)

BVNEG_NODE 

(bvneg x)

BVNOR_NODE 

(bvnor x y)

BVNOT_NODE 

(bvnot x)

BVOR_NODE 

(bvor x y)

BVROL_NODE 

((_ rotate_left x) y)

BVROR_NODE 

((_ rotate_right x) y)

BVSDIV_NODE 

(bvsdiv x y)

BVSGE_NODE 

(bvsge x y)

BVSGT_NODE 

(bvsgt x y)

BVSHL_NODE 

(bvshl x y)

BVSLE_NODE 

(bvslr x y)

BVSLT_NODE 

(bvslt x y)

BVSMOD_NODE 

(bvsmod x y)

BVSREM_NODE 

(bvsrem x y)

BVSUB_NODE 

(bvsub x y)

BVUDIV_NODE 

(bvudiv x y)

BVUGE_NODE 

(bvuge x y)

BVUGT_NODE 

(bvugt x y)

BVULE_NODE 

(bvule x y)

BVULT_NODE 

(bvult x y)

BVUREM_NODE 

(bvurem x y)

BVXNOR_NODE 

(bvxnor x y)

BVXOR_NODE 

(bvxor x y)

BV_NODE 

(_ bvx y)

COMPOUND_NODE 

Coumpound of several nodes

CONCAT_NODE 

(concat x y z ...)

DECIMAL_NODE 

Decimal node

DECLARE_FUNCTION_NODE 

(declare-fun x () (_ BitVec y))

DISTINCT_NODE 

(distinct x y)

EQUAL_NODE 

(= x y)

EXTRACT_NODE 

((_ extract x y) z)

FUNCTION_NODE 

(define-fun w (x) y z)

ITE_NODE 

(ite x y z)

LAND_NODE 

(and x y)

LET_NODE 

(let ((x y)) z)

LNOT_NODE 

(and x y)

LOR_NODE 

(or x y)

PARAM_NODE 

(x y)

REFERENCE_NODE 

Reference node

STRING_NODE 

String node

SX_NODE 

((_ sign_extend x) y)

VARIABLE_NODE 

Variable node

ZX_NODE 

((_ zero_extend x) y)

Definition at line 29 of file astEnums.hpp.