-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
56 lines (40 loc) · 1.13 KB
/
main.cpp
File metadata and controls
56 lines (40 loc) · 1.13 KB
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include "Scanner.h"
#include <fstream>
#include "Parser.h"
#include "Token.h"
#include "Scheme.h"
#include<stack>
#include "Graph.h"
#include "Interpreter.h"
#include "Node.h"
//#include "Database.h"
void processInput(const std::string& input) { //) {
Scanner scanner(input);
std::vector<Token> tokens;
Token token = scanner.scanToken();
tokens.push_back(token);
while (token.getType() != END) {
token = scanner.scanToken();
tokens.push_back(token);
}
Parser p = Parser(tokens);
p.parse();
Interpreter interpret = Interpreter(p);
vector<Predicate> queries = p.getQueries();
interpret.rules_loop(p);
cout << "Query Evaluation" << endl;
for (auto &query : queries){
interpret.evaluateQuery(query);
}
}
int main(int argc, char* argv[]) {
std::ifstream inFile(argv[1]);
std::string input((std::istreambuf_iterator<char>(inFile)),
std::istreambuf_iterator<char>());
inFile.close();
// std::string outputFileName(argv[2]);
// std::ofstream outFile(argv[2]);
processInput(input);
return 0;
}