-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExecutionEngine.cpp
More file actions
25 lines (20 loc) · 859 Bytes
/
ExecutionEngine.cpp
File metadata and controls
25 lines (20 loc) · 859 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "ExecutionEngine.h"
#include <iostream>
void ExecutionEngine::Run(DatalogProgram* datalogProgram) {
database = new Database(datalogProgram);
EvaluateQueries(datalogProgram);
}
void ExecutionEngine::EvaluateQueries(DatalogProgram *datalogProgram) {
std::vector<Predicate*> queries = datalogProgram->GetQueries();
// Iterate through every single query so we can evaluate each one
for (Predicate* query : queries) {
std::cout << query->ToString() << "? ";
Relation* queryResult = database->EvaluatePredicate(query);
if ((queryResult->GetTuples()).size() == 0) {
std::cout << "No" << std::endl;
} else {
std::cout << "Yes(" << (queryResult->GetTuples()).size() << ")" << std::endl;
queryResult->PrintRelation();
}
}
}