diff options
[IPL/T] Implemented Float type and added basic function structure as well as added addition function for two arguments
5 files changed, 52 insertions, 0 deletions
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 |
