![]() |
mutable
A Database System for Research and Fast Prototyping
|
An expression. More...
#include <AST.hpp>
Public Member Functions | |
Expr (Token tok) | |
Expr (Token tok, const Type *type) | |
virtual | ~Expr () |
const Type * | type () const |
Returns the Type of this Expr . | |
void | type (const Type *type) |
Sets the Type of this Expr . | |
bool | has_type () const |
Returns true iff this Expr has been assigned a Type , most likely by Sema . | |
virtual bool | is_constant () const =0 |
Returns true iff this Expr is constant, i.e. | |
virtual bool | can_be_null () const =0 |
Returns true iff this Expr is nullable, i.e. | |
virtual bool | contains_free_variables () const =0 |
Returns true iff this Expr contains a free variable. | |
virtual bool | contains_bound_variables () const =0 |
Returns true iff this Expr contains a bound variable. | |
virtual uint64_t | hash () const =0 |
Computes a hash of this , considering only syntactic properties. | |
virtual bool | operator== (const Expr &other) const =0 |
Returns true iff other is syntactically equal to this . | |
bool | operator!= (const Expr &other) const |
Returns false iff other is syntactically equal to this . | |
virtual void | accept (ASTExprVisitor &v)=0 |
virtual void | accept (ConstASTExprVisitor &v) const =0 |
Schema | get_required () const |
Returns a Schema instance containing all required definitions. | |
void | dot (std::ostream &out) const |
Writes a Graphivz dot representation of this Expr to out . | |
M_LCOV_EXCL_STOP void | dump (std::ostream &out) const |
void | dump () const |
Data Fields | |
Token | tok |
the token of the expression; serves as an anchor to locate the expression in the source | |
Private Attributes | |
const Type * | type_ = nullptr |
| |
bool | is_correlated_ = false |
Whether this Expr is correlated within its query, i.e. | |
Friends | |
struct | Sema |
struct | GetCorrelationInfo |
std::ostream &M_EXPORT | operator<< (std::ostream &out, const Expr &e) |
M_LCOV_EXCL_START friend std::string | to_string (const Expr &e) |
|
pure virtual |
Implemented in m::ast::ErrorExpr, m::ast::Designator, m::ast::Constant, m::ast::FnApplicationExpr, m::ast::UnaryExpr, m::ast::BinaryExpr, and m::ast::QueryExpr.
|
pure virtual |
Implemented in m::ast::ErrorExpr, m::ast::Designator, m::ast::Constant, m::ast::FnApplicationExpr, m::ast::UnaryExpr, m::ast::BinaryExpr, and m::ast::QueryExpr.
|
pure virtual |
Returns true iff this Expr
is nullable, i.e.
may evaluate to NULL
at runtime.
Implemented in m::ast::ErrorExpr, m::ast::Designator, m::ast::Constant, m::ast::FnApplicationExpr, m::ast::UnaryExpr, m::ast::BinaryExpr, and m::ast::QueryExpr.
|
pure virtual |
Returns true
iff this Expr
contains a bound variable.
A bound variable is a Designator
that is bound to an Attribute
or another Expr
within the query.
Implemented in m::ast::ErrorExpr, m::ast::Designator, m::ast::Constant, m::ast::FnApplicationExpr, m::ast::UnaryExpr, m::ast::BinaryExpr, and m::ast::QueryExpr.
|
pure virtual |
Returns true
iff this Expr
contains a free variable.
A free variable is a Designator
that is not bound to an Attribute
or another Expr
within the query but defined by an outer, enclosing statement.
Implemented in m::ast::ErrorExpr, m::ast::Designator, m::ast::Constant, m::ast::FnApplicationExpr, m::ast::UnaryExpr, m::ast::BinaryExpr, and m::ast::QueryExpr.
void Expr::dot | ( | std::ostream & | out | ) | const |
void Expr::dump | ( | ) | const |
M_LCOV_EXCL_START void Expr::dump | ( | std::ostream & | out | ) | const |
Schema Expr::get_required | ( | ) | const |
Returns a Schema
instance containing all required definitions.
Recursively traverses the Expr
to find all Designators
. Note, that FnApplicationExpr
s require special handling: a FnApplicationExpr
that is an aggregation is stringified to a Schema::Identifier
and not processed further recursively. The reason for this special treatment is that aggregations are performed during grouping and the aggregate value is referenced by the stringified expression (or alias, if given).
Definition at line 145 of file AST.cpp.
References m::Schema::add(), m::Catalog::Get(), m::Schema::has(), id, m::Catalog::pool(), and m::visit().
|
inline |
|
pure virtual |
Computes a hash of this
, considering only syntactic properties.
Other properties are ignored, e.g. type or designator target.
Implemented in m::ast::ErrorExpr, m::ast::Designator, m::ast::Constant, m::ast::FnApplicationExpr, m::ast::UnaryExpr, m::ast::BinaryExpr, and m::ast::QueryExpr.
Referenced by std::hash< m::ast::Expr >::operator()(), and std::hash< m::cnf::Predicate >::operator()().
|
pure virtual |
Returns true iff this Expr
is constant, i.e.
consists only of constants and can be evaluated at compilation time.
Implemented in m::ast::ErrorExpr, m::ast::Designator, m::ast::Constant, m::ast::FnApplicationExpr, m::ast::UnaryExpr, m::ast::BinaryExpr, and m::ast::QueryExpr.
|
inline |
|
pure virtual |
Returns true
iff other
is syntactically equal to this
.
Implemented in m::ast::ErrorExpr, m::ast::Designator, m::ast::Constant, m::ast::FnApplicationExpr, m::ast::UnaryExpr, m::ast::BinaryExpr, and m::ast::QueryExpr.
|
inline |
Returns the Type
of this Expr
.
Assumes that the Expr
has been assigned a Type
by the Sema
.
Definition at line 58 of file AST.hpp.
References M_notnull.
Referenced by m::ast::Sema::create_designator(), m::ast::UnaryExpr::hash(), m::ast::BinaryExpr::hash(), index_scan_codegen_compilation(), m::wasm::ExprCompiler::operator()(), and WeighExpr::operator()().
|
inline |
|
friend |
|
friend |
|
private |
Token m::ast::Expr::tok |
the token of the expression; serves as an anchor to locate the expression in the source
Definition at line 43 of file AST.hpp.
Referenced by m::ast::Sema::create_designator(), m::ast::Constant::hash(), m::Interpreter::M_OPERATOR_LIST(), and m::ast::Constant::operator==().
|
private |