Summary Files Commits Branches @commit @diff @stats
path: root / Year 2 / Implementation of Programming Languages / Transpiler / src / Value / Function
diff options
context:
space:
mode:
Commit06006fc601ab5f7bffa095b7279a61070e38ba54 (patch)
Author
 Syndamia <kamen@syndamia.com>
2023-01-19 11:27:31 +0200
Committer
 Syndamia <kamen@syndamia.com>
2023-01-19 11:27:31 +0200
Filesac858f357318ac2d588cdded32dc995da9fe9d3e /Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function
uni-projects-06006fc601ab5f7bffa095b7279a61070e38ba54.tar
uni-projects-06006fc601ab5f7bffa095b7279a61070e38ba54.tar.gz
uni-projects-06006fc601ab5f7bffa095b7279a61070e38ba54.zip
Parent8f41c57ff12fa72693016b75fec63bb86ae6560f (diff)
[IPL/T] Implemented Float type and added basic function structure as well as added addition function for two arguments
diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/BuiltInFunction.cpp b/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/BuiltInFunction.cpp
new file mode 100644
index 0000000..6d38aad
--- /dev/null
+++ b/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/BuiltInFunction.cpp
@@ -0,0 +1,8 @@
+#include "BuiltInFunction.h"
+#include "../../LLVMVisitor/LLVMVisitor.h"
+
+std::string BuiltInFunction::Visit(LLVMVisitor& visitor) const {
+ return visitor.Visit(*this);
+}
+
+BuiltInFunction::BuiltInFunction(std::string name, std::deque<Value*> args) : Function(name, args) {}
diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/BuiltInFunction.h b/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/BuiltInFunction.h
new file mode 100644
index 0000000..26fba3f
--- /dev/null
+++ b/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/BuiltInFunction.h
@@ -0,0 +1,12 @@
+#ifndef VALUE_ADDFUNCTION
+#define VALUE_ADDFUNCTION
+
+#include "Function.h"
+
+class BuiltInFunction : public Function {
+public:
+ std::string Visit(LLVMVisitor& visitor) const override;
+ BuiltInFunction(std::string name, std::deque<Value*> args);
+};
+
+#endif
diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/Function.cpp b/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/Function.cpp
new file mode 100644
index 0000000..9e35eab
--- /dev/null
+++ b/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/Function.cpp
@@ -0,0 +1,12 @@
+#include "Function.h"
+#include "../../LLVMVisitor/LLVMVisitor.h"
+
+const std::string& Function::get_name() const {
+ return name;
+}
+
+const std::deque<Value*> Function::get_args() const {
+ return args;
+}
+
+Function::Function(std::string name, std::deque<Value*> args) : name(name), args(args) {}
diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/Function.h b/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/Function.h
new file mode 100644
index 0000000..549d15e
--- /dev/null
+++ b/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/Function.h
@@ -0,0 +1,20 @@
+#ifndef VALUE_FUNCTION
+#define VALUE_FUNCTION
+
+#include <string>
+#include <deque>
+#include "../Value.h"
+
+class Function : public Value {
+ std::string name;
+ std::deque<Value*> args;
+
+public:
+ const std::string& get_name() const;
+ const std::deque<Value*> get_args() const;
+
+ Function(std::string name, std::deque<Value*> args);
+ ~Function() override = default;
+};
+
+#endif
diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/UserFunction.h b/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/UserFunction.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function/UserFunction.h