souffle
2.0.2-371-g6315b36
|
Transformer resolving aliases for anonymous records. More...
#include <ResolveAnonymousRecordAliases.h>
Public Member Functions | |
ResolveAnonymousRecordAliasesTransformer * | clone () const override |
std::string | getName () const override |
Public Member Functions inherited from souffle::ast::transform::Transformer | |
bool | apply (TranslationUnit &translationUnit) |
virtual | ~Transformer ()=default |
Private Member Functions | |
std::map< std::string, const RecordInit * > | findVariablesRecordMapping (TranslationUnit &, const Clause &) |
For each variable equal to some anonymous record, assign a value of that record. More... | |
bool | replaceNamedVariables (TranslationUnit &, Clause &) |
Use mapping found by findVariablesRecordMapping to substitute a records for each variable that operates on records. More... | |
bool | replaceUnnamedVariable (Clause &) |
For unnamed variables, replace each equation _ op record with true. More... | |
bool | transform (TranslationUnit &translationUnit) override |
Transformer resolving aliases for anonymous records.
The transformer works by searching the clause for equalities of the form a = [...], where a is an anonymous record, and replacing all occurrences of a with the RHS.
The transformer is to be called in conjunction with FoldAnonymousRecords.
Definition at line 39 of file ResolveAnonymousRecordAliases.h.
|
inlineoverridevirtual |
Implements souffle::ast::transform::Transformer.
Definition at line 49 of file ResolveAnonymousRecordAliases.h.
|
private |
For each variable equal to some anonymous record, assign a value of that record.
Definition at line 44 of file ResolveAnonymousRecordAliases.cpp.
|
inlineoverridevirtual |
Implements souffle::ast::transform::Transformer.
Definition at line 45 of file ResolveAnonymousRecordAliases.h.
|
private |
Use mapping found by findVariablesRecordMapping to substitute a records for each variable that operates on records.
Definition at line 99 of file ResolveAnonymousRecordAliases.cpp.
|
private |
For unnamed variables, replace each equation _ op record with true.
Definition at line 129 of file ResolveAnonymousRecordAliases.cpp.
References souffle::isEqConstraint().
|
overrideprivatevirtual |
Implements souffle::ast::transform::Transformer.
Definition at line 161 of file ResolveAnonymousRecordAliases.cpp.