Skip to content

Commit

Permalink
Made program translator more consistent with rest of translation.
Browse files Browse the repository at this point in the history
  • Loading branch information
azreika committed Nov 13, 2020
1 parent ebbeab5 commit d085d04
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 14 deletions.
11 changes: 4 additions & 7 deletions src/ast2ram/AstToRamTranslator.cpp
Expand Up @@ -754,7 +754,7 @@ void AstToRamTranslator::finaliseAstTypes() {
});
}

void AstToRamTranslator::translateProgram(const ast::TranslationUnit& translationUnit) {
Own<ram::Sequence> AstToRamTranslator::translateProgram(const ast::TranslationUnit& translationUnit) {
// keep track of relevant analyses
ioType = translationUnit.getAnalysis<ast::analysis::IOTypeAnalysis>();
typeEnv = &translationUnit.getAnalysis<ast::analysis::TypeEnvironmentAnalysis>()->getTypeEnvironment();
Expand All @@ -780,7 +780,7 @@ void AstToRamTranslator::translateProgram(const ast::TranslationUnit& translatio
removeADTs(translationUnit);

// handle the case of an empty SCC graph
if (sccGraph->getNumberOfSCCs() == 0) return;
if (sccGraph->getNumberOfSCCs() == 0) return mk<ram::Sequence>();

// create all RAM relations in ramRelations
const auto& sccOrdering =
Expand Down Expand Up @@ -808,14 +808,14 @@ void AstToRamTranslator::translateProgram(const ast::TranslationUnit& translatio
}

// done for main prog
ramMain = mk<ram::Sequence>(std::move(res));
return mk<ram::Sequence>(std::move(res));
}

Own<ram::TranslationUnit> AstToRamTranslator::translateUnit(ast::TranslationUnit& tu) {
auto ram_start = std::chrono::high_resolution_clock::now();
program = &tu.getProgram();

translateProgram(tu);
auto ramMain = translateProgram(tu);

SymbolTable& symTab = getSymbolTable();
ErrorReport& errReport = tu.getErrorReport();
Expand All @@ -825,9 +825,6 @@ Own<ram::TranslationUnit> AstToRamTranslator::translateUnit(ast::TranslationUnit
rels.push_back(std::move(cur.second));
}

if (ramMain == nullptr) {
ramMain = mk<ram::Sequence>();
}
auto ramProg = mk<ram::Program>(std::move(rels), std::move(ramMain), std::move(ramSubroutines));

// add the translated program to the debug report
Expand Down
5 changes: 1 addition & 4 deletions src/ast2ram/AstToRamTranslator.h
Expand Up @@ -93,7 +93,7 @@ class AstToRamTranslator {
Own<ram::Expression> translateValue(const ast::Argument* arg, const ValueIndex& index);
Own<ram::Condition> translateConstraint(const ast::Literal* arg, const ValueIndex& index);
Own<ram::Expression> translateConstant(const ast::Constant& c);
virtual void translateProgram(const ast::TranslationUnit& translationUnit);
virtual Own<ram::Sequence> translateProgram(const ast::TranslationUnit& translationUnit);

/** determine the auxiliary for relations */
size_t getEvaluationArity(const ast::Atom* atom) const;
Expand All @@ -107,9 +107,6 @@ class AstToRamTranslator {
/** AST program */
const ast::Program* program = nullptr;

/** RAM program */
Own<ram::Statement> ramMain;

std::map<std::string, Own<ram::Statement>> ramSubroutines;
std::map<std::string, Own<ram::Relation>> ramRelations;
Own<ast::SipsMetric> sipsMetric;
Expand Down
6 changes: 4 additions & 2 deletions src/ast2ram/ProvenanceTranslator.cpp
Expand Up @@ -37,12 +37,14 @@

namespace souffle::ast2ram {

void ProvenanceTranslator::translateProgram(const ast::TranslationUnit& translationUnit) {
Own<ram::Sequence> ProvenanceTranslator::translateProgram(const ast::TranslationUnit& translationUnit) {
// do the regular translation
AstToRamTranslator::translateProgram(translationUnit);
auto ramProgram = AstToRamTranslator::translateProgram(translationUnit);

// add subroutines for each clause
addProvenanceClauseSubroutines(program);

return ramProgram;
}

void ProvenanceTranslator::clearExpiredRelations(
Expand Down
2 changes: 1 addition & 1 deletion src/ast2ram/ProvenanceTranslator.h
Expand Up @@ -24,7 +24,7 @@ class ProvenanceTranslator : public AstToRamTranslator {
~ProvenanceTranslator() = default;

protected:
void translateProgram(const ast::TranslationUnit& translationUnit) override;
Own<ram::Sequence> translateProgram(const ast::TranslationUnit& translationUnit) override;
void addNegation(ast::Clause& clause, const ast::Atom* atom) override;
void clearExpiredRelations(
VecOwn<ram::Statement>& stmts, const std::set<const ast::Relation*>& expiredRelations) override;
Expand Down

0 comments on commit d085d04

Please sign in to comment.