souffle
2.0.2-371-g6315b36
|
Namespaces | |
analysis | |
detail | |
test | |
transform | |
Data Structures | |
class | Aggregator |
Defines the aggregator class. More... | |
class | AlgebraicDataType |
Combination of types using sums and products. More... | |
class | AllBoundSips |
Goal: Prioritise atoms with all arguments bound. More... | |
class | Argument |
An abstract class for arguments. More... | |
struct | ast_visitor_tag |
A tag type required for the is_ast_visitor type trait to identify AstVisitors. More... | |
class | Atom |
An atom class. More... | |
class | Attribute |
Attribute class. More... | |
class | BinaryConstraint |
Binary constraint class. More... | |
class | BindingStore |
class | BooleanConstraint |
Boolean constraint class. More... | |
class | BranchDeclaration |
Wrapper for the single branch declaration (product type) inside ADT declaration. More... | |
class | BranchInit |
Initialization of ADT instance. More... | |
class | Clause |
Intermediate representation of a horn clause. More... | |
class | Component |
Component class. More... | |
class | ComponentInit |
Component initialization class. More... | |
class | ComponentType |
Component type of a component. More... | |
class | Constant |
Abstract constant class. More... | |
class | Constraint |
Abstract class for AST constraints. More... | |
class | Counter |
counter functor (incrementing a value after each invocation) More... | |
class | DeltaInputSips |
Goal: prioritise (1) all-bound, then (2) deltas, then (3) input, and then (4) left-most. More... | |
class | DeltaSips |
Goal: prioritise (1) all-bound, then (2) deltas, and then (3) left-most. More... | |
class | Directive |
a directive has a type (e.g. input/output/printsize/limitsize), qualified relation name, and a key value map for storing parameters of the directive. More... | |
class | ExecutionOrder |
An execution order for atoms within a clause; one or more execution orders form a plan. More... | |
class | ExecutionPlan |
class | Functor |
Abstract functor class. More... | |
class | FunctorDeclaration |
User-defined functor declaration. More... | |
class | InputSips |
Goal: prioritise (1) all-bound, then (2) input, and then (3) left-most. More... | |
class | IntrinsicFunctor |
Intrinsic Functor class for functors are in-built. More... | |
class | LeastFreeSips |
Goal: choose the atom with the least number of unbound arguments. More... | |
class | LeastFreeVarsSips |
Goal: choose the atom with the least amount of unbound variables. More... | |
class | Literal |
Defines an abstract class for literals in a horn clause. More... | |
class | MaxBoundSips |
Goal: prioritise (1) all-bound, then (2) max number of bound vars, then (3) left-most. More... | |
class | MaxRatioSips |
Goal: prioritise max ratio of bound args. More... | |
class | NaiveSips |
Goal: Prioritise (1) all bound, then (2) atoms with at least one bound argument, then (3) left-most. More... | |
class | NameComparison |
Comparator for relations. More... | |
class | Negation |
Negation of an atom negated atom. More... | |
class | NilConstant |
Defines the nil constant. More... | |
class | Node |
Abstract class for syntactic elements in an input program. More... | |
class | NodeMapper |
An abstract class for manipulating AST Nodes by substitution. More... | |
class | NumericConstant |
Numeric Constant. More... | |
class | Pragma |
Representation of a global option. More... | |
class | ProfileUseSips |
Goal: reorder based on the given profiling information Metric: cost(atom_R) = log(|atom_R|) * #free/#args. More... | |
class | Program |
The program class consists of relations, clauses and types. More... | |
class | ProvenanceNegation |
Subclass of Literal that represents a negated atom, * e.g., !parent(x,y). More... | |
class | QualifiedName |
Qualified Name class defines fully/partially qualified names to identify objects in components. More... | |
class | RecordInit |
Defines a record initialization class. More... | |
class | RecordType |
Record type class for record type declarations. More... | |
class | Relation |
Defines a relation with a name, attributes, qualifiers, and internal representation. More... | |
class | SipsMetric |
Class for SIPS cost-metric functions Each subclass represents a different heuristic used for evaluating the cost of choosing an atom next in the schedule. More... | |
class | StrictSips |
Goal: Always choose the left-most atom. More... | |
class | StringConstant |
String constant class. More... | |
class | SubroutineArgument |
Defines the argument class for subrountines. More... | |
class | SubsetType |
Defines subset type class. More... | |
class | Term |
Defines an abstract term class used for functors and other constructors. More... | |
class | TranslationUnit |
Translation unit class for the translation pipeline. More... | |
class | Type |
An abstract base class for types. More... | |
class | TypeCast |
Defines a type cast class for expressions. More... | |
class | UnionType |
The union type class. More... | |
class | UnnamedVariable |
Unnamed variable class. More... | |
class | UserDefinedFunctor |
User-Defined functor class. More... | |
class | Variable |
Named variable class. More... | |
struct | Visitor |
The generic base type of all AstVisitors realizing the dispatching of visitor calls. More... | |
Typedefs | |
using | RelationSet = std::set< const Relation *, NameComparison > |
Relation set. More... | |
Enumerations | |
enum | DirectiveType { DirectiveType::input, DirectiveType::output, DirectiveType::printsize, DirectiveType::limitsize } |
Functions | |
Clause * | cloneHead (const Clause *clause) |
Returns a clause which contains head of the given clause. More... | |
const Relation * | getAtomRelation (const Atom *atom, const Program *program) |
Returns the relation referenced by the given atom. More... | |
template<typename T , typename C > | |
std::vector< T * > | getBodyLiterals (const C &clause) |
Returns literals of a particular type in the body of a clause. More... | |
std::set< const Relation * > | getBodyRelations (const Clause *clause, const Program *program) |
Returns the relations referenced in the body of the given clause. More... | |
size_t | getClauseNum (const Program *program, const Clause *clause) |
Returns the index of a clause within its relation, ignoring facts. More... | |
std::vector< Clause * > | getClauses (const Program &program, const QualifiedName &relationName) |
Returns a vector of clauses in the program describing the relation with the given name. More... | |
std::vector< Clause * > | getClauses (const Program &program, const Relation &rel) |
Returns a vector of clauses in the program describing the given relation. More... | |
std::vector< Directive * > | getDirectives (const Program &program, const QualifiedName &relationName) |
const Relation * | getHeadRelation (const Clause *clause, const Program *program) |
Returns the relation referenced by the head of the given clause. More... | |
std::vector< const RecordInit * > | getRecords (const Node &root) |
Obtains a list of all records referenced within the AST rooted by the given root node. More... | |
Relation * | getRelation (const Program &program, const QualifiedName &name) |
Returns the relation with the given name in the program. More... | |
std::vector< const Variable * > | getVariables (const Node &root) |
Obtains a list of all variables referenced within the AST rooted by the given root node. More... | |
bool | hasClauseWithAggregatedRelation (const Relation *relation, const Relation *aggRelation, const Program *program, const Literal *&foundLiteral) |
Returns whether the given relation has any clauses which contain an aggregation over of a specific relation. More... | |
bool | hasClauseWithNegatedRelation (const Relation *relation, const Relation *negRelation, const Program *program, const Literal *&foundLiteral) |
Returns whether the given relation has any clauses which contain a negation of a specific relation. More... | |
bool | isDeltaRelation (const QualifiedName &name) |
Returns whether the given atom is a delta relation. More... | |
bool | isFact (const Clause &clause) |
Returns whether the given clause is a fact. More... | |
bool | isProposition (const Atom *atom) |
Returns whether the given atom is a propositon. More... | |
bool | isRecursiveClause (const Clause &clause) |
Returns whether the given clause is recursive. More... | |
bool | isRule (const Clause &clause) |
Returns whether the given clause is a rule. More... | |
template<typename Lambda > | |
detail::LambdaNodeMapper< Lambda > | makeLambdaAstMapper (const Lambda &lambda) |
Creates a node mapper based on a corresponding lambda expression. More... | |
void | negateConstraintInPlace (Constraint &constraint) |
Negate an ast constraint. More... | |
QualifiedName | operator+ (const std::string &name, const QualifiedName &id) |
std::ostream & | operator<< (std::ostream &os, DirectiveType e) |
std::string | pprint (const Node &node) |
void | removeRelation (TranslationUnit &tu, const QualifiedName &name) |
Remove relation and all its clauses from the program. More... | |
void | removeRelationClauses (TranslationUnit &tu, const QualifiedName &name) |
Removes the set of clauses with the given relation name. More... | |
void | removeRelationIOs (TranslationUnit &tu, const QualifiedName &name) |
Removes the set of IOs with the given relation name. More... | |
bool | renameAtoms (Node &node, const std::map< QualifiedName, QualifiedName > &oldToNew) |
Rename all atoms hat appear in a node to a given name. More... | |
Clause * | reorderAtoms (const Clause *clause, const std::vector< unsigned int > &newOrder) |
Reorders the atoms of a clause to be in the given order. More... | |
IntrinsicFunctors | validOverloads (const analysis::TypeAnalysis &, const IntrinsicFunctor &) |
Pick valid overloads for a functor, sorted by some measure of "preference". More... | |
template<typename Lambda , typename R = typename lambda_traits<Lambda>::result_type, typename N = typename lambda_traits<Lambda>::arg0_type> | |
std::enable_if<!detail::is_ast_visitor< Lambda >::value, void >::type | visitDepthFirst (const Node &root, const Lambda &fun) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first pre-order fashion applying the given function to each encountered node. More... | |
template<typename R , typename N > | |
void | visitDepthFirst (const Node &root, const std::function< R(const N &)> &fun) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first pre-order fashion applying the given function to each encountered node. More... | |
template<typename R , typename... Ps, typename... Args> | |
void | visitDepthFirst (const Node &root, Visitor< R, Ps... > &visitor, Args &... args) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first pre-order fashion applying the given visitor to each encountered node. More... | |
template<typename T , typename Lambda > | |
void | visitDepthFirst (const std::vector< T * > &list, const Lambda &fun) |
A utility function visiting all nodes within a given list of AST root nodes recursively in a depth-first pre-order fashion applying the given function to each encountered node. More... | |
template<typename T , typename Lambda > | |
void | visitDepthFirst (const VecOwn< T > &list, const Lambda &fun) |
A utility function visiting all nodes within a given list of AST root nodes recursively in a depth-first pre-order fashion applying the given function to each encountered node. More... | |
template<typename Lambda , typename R = typename lambda_traits<Lambda>::result_type, typename N = typename lambda_traits<Lambda>::arg0_type> | |
std::enable_if<!detail::is_ast_visitor< Lambda >::value, void >::type | visitDepthFirstPostOrder (const Node &root, const Lambda &fun) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first post-order fashion applying the given function to each encountered node. More... | |
template<typename R , typename N > | |
void | visitDepthFirstPostOrder (const Node &root, const std::function< R(const N &)> &fun) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first post-order fashion applying the given function to each encountered node. More... | |
template<typename R , typename... Ps, typename... Args> | |
void | visitDepthFirstPostOrder (const Node &root, Visitor< R, Ps... > &visitor, Args &... args) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first post-order fashion applying the given visitor to each encountered node. More... | |
template<typename R , typename... Ps, typename... Args> | |
void | visitDepthFirstPreOrder (const Node &root, Visitor< R, Ps... > &visitor, Args &... args) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first pre-order fashion applying the given visitor to each encountered node. More... | |
using souffle::ast::RelationSet = typedef std::set<const Relation*, NameComparison> |
Relation set.
Definition at line 180 of file Relation.h.
|
strong |
Enumerator | |
---|---|
input | |
output | |
printsize | |
limitsize |
Definition at line 37 of file Directive.h.
Returns a clause which contains head of the given clause.
clause | the clause which head to be cloned |
Returns the relation referenced by the given atom.
atom | the atom |
program | the program containing the relations |
Definition at line 129 of file Utils.cpp.
Referenced by getBodyRelations(), getHeadRelation(), and souffle::ast::transform::ExecutionPlanChecker::transform().
std::vector<T*> souffle::ast::getBodyLiterals | ( | const C & | clause | ) |
std::set< const Relation * > souffle::ast::getBodyRelations | ( | const Clause * | clause, |
const Program * | program | ||
) |
Returns the relations referenced in the body of the given clause.
clause | the clause |
program | the program containing the relations |
Definition at line 137 of file Utils.cpp.
References getAtomRelation(), and visitDepthFirst().
Returns the index of a clause within its relation, ignoring facts.
Used in provenance as a unique ID for clauses within their relations.
program | the program |
clause | the clause to get the index of |
Definition at line 150 of file Utils.cpp.
References isFact().
std::vector< Clause * > souffle::ast::getClauses | ( | const Program & | program, |
const QualifiedName & | relationName | ||
) |
Returns a vector of clauses in the program describing the relation with the given name.
program | the program |
name | the name of the relation to search for |
Definition at line 77 of file Utils.cpp.
Referenced by souffle::ast::transform::getInlinedLiteral(), souffle::ast::transform::MagicSetTransformer::getTriviallyIgnoredRelations(), souffle::ast::transform::MinimiseProgramTransformer::reduceLocallyEquivalentClauses(), souffle::ast::transform::MinimiseProgramTransformer::reduceSingletonRelations(), souffle::ast::transform::RemoveEmptyRelationsTransformer::removeEmptyRelations(), souffle::ast::transform::RemoveRelationCopiesTransformer::removeRelationCopies(), and souffle::ast::transform::ExecutionPlanChecker::transform().
Returns a vector of clauses in the program describing the given relation.
program | the program |
rel | the relation to search for |
Definition at line 87 of file Utils.cpp.
References directives.
std::vector<Directive*> souffle::ast::getDirectives | ( | const Program & | program, |
const QualifiedName & | relationName | ||
) |
Returns the relation referenced by the head of the given clause.
clause | the clause |
program | the program containing the relations |
Definition at line 133 of file Utils.cpp.
References getAtomRelation(), and visitDepthFirst().
std::vector< const RecordInit * > souffle::ast::getRecords | ( | const Node & | root | ) |
Obtains a list of all records referenced within the AST rooted by the given root node.
root | the root of the AST to be searched |
Definition at line 70 of file Utils.cpp.
References clauses, and souffle::ast::Program::getClauses().
Relation * souffle::ast::getRelation | ( | const Program & | program, |
const QualifiedName & | name | ||
) |
Returns the relation with the given name in the program.
program | the program |
name | the name of the relation to search for |
Definition at line 101 of file Utils.cpp.
References removeRelationClauses(), and removeRelationIOs().
Referenced by souffle::ParserDriver::addRelation(), souffle::ast::transform::getInlinedLiteral(), removeRelationIOs(), and souffle::ast::transform::IOAttributesTransformer::transform().
Obtains a list of all variables referenced within the AST rooted by the given root node.
root | the root of the AST to be searched |
Definition at line 63 of file Utils.cpp.
References visitDepthFirst().
bool souffle::ast::hasClauseWithAggregatedRelation | ( | const Relation * | relation, |
const Relation * | aggRelation, | ||
const Program * | program, | ||
const Literal *& | foundLiteral | ||
) |
Returns whether the given relation has any clauses which contain an aggregation over of a specific relation.
relation | the relation to search the clauses of |
aggRelation | the relation to search for in aggregations in clause bodies |
program | the program containing the relations |
foundLiteral | set to the literal found in an aggregation |
Definition at line 184 of file Utils.cpp.
bool souffle::ast::hasClauseWithNegatedRelation | ( | const Relation * | relation, |
const Relation * | negRelation, | ||
const Program * | program, | ||
const Literal *& | foundLiteral | ||
) |
Returns whether the given relation has any clauses which contain a negation of a specific relation.
relation | the relation to search the clauses of |
negRelation | the relation to search for negations of in clause bodies |
program | the program containing the relations |
foundLiteral | set to the negation literal that was found |
Definition at line 171 of file Utils.cpp.
bool souffle::ast::isDeltaRelation | ( | const QualifiedName & | name | ) |
bool souffle::ast::isFact | ( | const Clause & | clause | ) |
Returns whether the given clause is a fact.
Definition at line 214 of file Utils.cpp.
Referenced by getClauseNum(), and souffle::ast::transform::RemoveRelationCopiesTransformer::removeRelationCopies().
bool souffle::ast::isProposition | ( | const Atom * | atom | ) |
bool souffle::ast::isRecursiveClause | ( | const Clause & | clause | ) |
bool souffle::ast::isRule | ( | const Clause & | clause | ) |
detail::LambdaNodeMapper<Lambda> souffle::ast::makeLambdaAstMapper | ( | const Lambda & | lambda | ) |
Creates a node mapper based on a corresponding lambda expression.
Definition at line 53 of file LambdaNodeMapper.h.
void souffle::ast::negateConstraintInPlace | ( | Constraint & | constraint | ) |
Negate an ast constraint.
constraint | constraint that will be negated |
Definition at line 297 of file Utils.cpp.
Referenced by souffle::RuleBody::toClauseBodies().
|
inline |
Definition at line 105 of file QualifiedName.h.
|
inline |
Definition at line 40 of file Directive.h.
std::string souffle::ast::pprint | ( | const Node & | node | ) |
void souffle::ast::removeRelation | ( | TranslationUnit & | tu, |
const QualifiedName & | name | ||
) |
Remove relation and all its clauses from the program.
tu | the translation unit |
name | the name of the relation to delete |
Definition at line 105 of file Utils.cpp.
Referenced by souffle::ast::transform::RemoveRedundantRelationsTransformer::transform().
void souffle::ast::removeRelationClauses | ( | TranslationUnit & | tu, |
const QualifiedName & | name | ||
) |
Removes the set of clauses with the given relation name.
tu | the translation unit |
name | the name of the relation to search for |
Definition at line 114 of file Utils.cpp.
Referenced by getRelation().
void souffle::ast::removeRelationIOs | ( | TranslationUnit & | tu, |
const QualifiedName & | name | ||
) |
Removes the set of IOs with the given relation name.
tu | the translation unit |
name | the name of the relation to search for |
Definition at line 122 of file Utils.cpp.
References souffle::ast::Atom::getQualifiedName(), and getRelation().
Referenced by getRelation().
bool souffle::ast::renameAtoms | ( | Node & | node, |
const std::map< QualifiedName, QualifiedName > & | oldToNew | ||
) |
Rename all atoms hat appear in a node to a given name.
node | node to alter the children of |
oldToNew | map from old atom names to new atom names |
Definition at line 307 of file Utils.cpp.
References souffle::clone(), and souffle::contains().
Clause * souffle::ast::reorderAtoms | ( | const Clause * | clause, |
const std::vector< unsigned int > & | newOrder | ||
) |
Reorders the atoms of a clause to be in the given order.
Remaining body literals remain in the same order.
E.g. if atoms are [a,b,c] and given order is [1,2,0], then the final atom order will be [b,c,a].
clause | clause to reorder atoms in |
newOrder | new order of atoms; atoms[i] = atoms[newOrder[i]] |
Definition at line 264 of file Utils.cpp.
IntrinsicFunctors souffle::ast::validOverloads | ( | const analysis::TypeAnalysis & | , |
const IntrinsicFunctor & | |||
) |
Pick valid overloads for a functor, sorted by some measure of "preference".
std::enable_if<!detail::is_ast_visitor<Lambda>::value, void>::type souffle::ast::visitDepthFirst | ( | const Node & | root, |
const Lambda & | fun | ||
) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first pre-order fashion applying the given function to each encountered node.
root | the root of the AST to be visited |
fun | the function to be applied |
args | a list of extra parameters to be forwarded to the visitor |
Definition at line 343 of file Visitor.h.
References visitDepthFirst().
void souffle::ast::visitDepthFirst | ( | const Node & | root, |
const std::function< R(const N &)> & | fun | ||
) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first pre-order fashion applying the given function to each encountered node.
root | the root of the AST to be visited |
fun | the function to be applied |
args | a list of extra parameters to be forwarded to the visitor |
Definition at line 327 of file Visitor.h.
References visitDepthFirst().
void souffle::ast::visitDepthFirst | ( | const Node & | root, |
Visitor< R, Ps... > & | visitor, | ||
Args &... | args | ||
) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first pre-order fashion applying the given visitor to each encountered node.
root | the root of the AST to be visited |
visitor | the visitor to be applied on each node |
args | a list of extra parameters to be forwarded to the visitor |
Definition at line 273 of file Visitor.h.
References souffle::ast::detail::LambdaVisitor< R, N >::lambda, souffle::ast::detail::LambdaVisitor< R, N >::LambdaVisitor(), n, and souffle::ast::detail::LambdaVisitor< R, N >::visit().
Referenced by souffle::ast::BindingStore::BindingStore(), souffle::ast::transform::SemanticCheckerImpl::checkComplexRule(), souffle::ast::transform::MagicSetTransformer::NormaliseDatabaseTransformer::extractIDB(), souffle::ast::transform::MagicSetTransformer::MagicSetCoreTransformer::getBindingEqualityConstraints(), getBodyRelations(), getHeadRelation(), souffle::ast::transform::MagicSetTransformer::getStronglyIgnoredRelations(), souffle::ast::transform::MagicSetTransformer::getTriviallyIgnoredRelations(), getVariables(), souffle::ast::transform::MaterializeAggregationQueriesTransformer::materializeAggregationQueries(), souffle::ast::transform::MagicSetTransformer::NormaliseDatabaseTransformer::querifyOutputRelations(), souffle::ast::transform::RemoveEmptyRelationsTransformer::removeEmptyRelations(), souffle::ast::transform::SimplifyAggregateTargetExpressionTransformer::transform(), souffle::ast::transform::MaterializeSingletonAggregationTransformer::transform(), souffle::ast::transform::PartitionBodyLiteralsTransformer::transform(), visitDepthFirst(), and souffle::interpreter::NodeGenerator::visitQuery().
void souffle::ast::visitDepthFirst | ( | const std::vector< T * > & | list, |
const Lambda & | fun | ||
) |
A utility function visiting all nodes within a given list of AST root nodes recursively in a depth-first pre-order fashion applying the given function to each encountered node.
list | the list of roots of the ASTs to be visited |
fun | the function to be applied |
args | a list of extra parameters to be forwarded to the visitor |
Definition at line 358 of file Visitor.h.
References visitDepthFirst().
void souffle::ast::visitDepthFirst | ( | const VecOwn< T > & | list, |
const Lambda & | fun | ||
) |
A utility function visiting all nodes within a given list of AST root nodes recursively in a depth-first pre-order fashion applying the given function to each encountered node.
list | the list of roots of the ASTs to be visited |
fun | the function to be applied |
args | a list of extra parameters to be forwarded to the visitor |
Definition at line 374 of file Visitor.h.
References souffle::ast::detail::makeLambdaVisitor().
std::enable_if<!detail::is_ast_visitor<Lambda>::value, void>::type souffle::ast::visitDepthFirstPostOrder | ( | const Node & | root, |
const Lambda & | fun | ||
) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first post-order fashion applying the given function to each encountered node.
root | the root of the AST to be visited |
fun | the function to be applied |
args | a list of extra parameters to be forwarded to the visitor |
void souffle::ast::visitDepthFirstPostOrder | ( | const Node & | root, |
const std::function< R(const N &)> & | fun | ||
) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first post-order fashion applying the given function to each encountered node.
root | the root of the AST to be visited |
fun | the function to be applied |
args | a list of extra parameters to be forwarded to the visitor |
Definition at line 390 of file Visitor.h.
References visitDepthFirstPostOrder().
void souffle::ast::visitDepthFirstPostOrder | ( | const Node & | root, |
Visitor< R, Ps... > & | visitor, | ||
Args &... | args | ||
) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first post-order fashion applying the given visitor to each encountered node.
root | the root of the AST to be visited |
visitor | the visitor to be applied on each node |
args | a list of extra parameters to be forwarded to the visitor |
Definition at line 254 of file Visitor.h.
Referenced by visitDepthFirstPostOrder().
void souffle::ast::visitDepthFirstPreOrder | ( | const Node & | root, |
Visitor< R, Ps... > & | visitor, | ||
Args &... | args | ||
) |
A utility function visiting all nodes within the ast rooted by the given node recursively in a depth-first pre-order fashion applying the given visitor to each encountered node.
root | the root of the AST to be visited |
visitor | the visitor to be applied on each node |
args | a list of extra parameters to be forwarded to the visitor |
Definition at line 235 of file Visitor.h.
Referenced by souffle::ast::Visitor< void >::visitNode().