Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.cpp b/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.cpp
index d0d8de3..c12bd09 100644
--- a/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.cpp
+++ b/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.cpp
@@ -4,18 +4,19 @@
LLVMVisitor::LLVMVisitor(const char* fileName) : outFile(std::ofstream(fileName)), reg() {
if (!outFile.is_open())
throw std::runtime_error("Couldn't open file for writing!");
+ outFile << "define i32 @main() {\n";
+}
+
+void LLVMVisitor::finalizeFile() {
+ outFile << "ret i32 0\n}\n";
}
std::string LLVMVisitor::Visit(const Integer& vint) {
- std::string valRegister = *(reg++);
- outFile << valRegister + " = " + std::to_string(vint.get_value()) + "\n";
- return valRegister;
+ return std::to_string(vint.get_value());
}
std::string LLVMVisitor::Visit(const Float& vfloat) {
- std::string valRegister = *(reg++);
- outFile << valRegister + " = " + std::to_string(vfloat.get_value()) + "\n";
- return valRegister;
+ return std::to_string(vfloat.get_value());
}
void f_add(std::string reg, std::string first, std::string second, std::ofstream& of) {
diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.h b/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.h
index f8fea5e..6229b7a 100644
--- a/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.h
+++ b/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.h
@@ -19,6 +19,7 @@ public:
std::string Visit(const Float& vfloat);
std::string Visit(const BuiltInFunction& bfun);
+ void finalizeFile();
LLVMVisitor(const char* fileName);
};
diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/Register.cpp b/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/Register.cpp
index b2311d9..f352295 100644
--- a/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/Register.cpp
+++ b/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/Register.cpp
@@ -1,6 +1,6 @@
#include "Register.h"
-Register::Register() : counter(0) {}
+Register::Register() : counter(1) {}
Register& Register::operator++() {
++counter;
diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/main.cpp b/Year 2/Implementation of Programming Languages/Transpiler/src/main.cpp
index a154c56..7f829d3 100644
--- a/Year 2/Implementation of Programming Languages/Transpiler/src/main.cpp
+++ b/Year 2/Implementation of Programming Languages/Transpiler/src/main.cpp
@@ -14,4 +14,5 @@ int main() {
for (Value* n : nodes) {
n->Visit(visitor);
}
+ visitor.finalizeFile();
}