Summary Files Commits Branches @commit @diff @stats
path: root / Year 2 / Implementation of Programming Languages / Transpiler / src / Value / Function
diff options
context:
space:
mode:
Commitd8eb50a7960edd35c74885d0ba7897f35c1b1eed (patch)
Author
 Syndamia <kamen@syndamia.com>
2023-01-19 17:43:29 +0200
Committer
 Syndamia <kamen@syndamia.com>
2023-01-19 17:43:29 +0200
Files2de79b2847c730bd1bfbb0f6e02ef57aac1ada40 /Year 2/Implementation of Programming Languages/Transpiler/src/Value/Function
uni-projects-d8eb50a7960edd35c74885d0ba7897f35c1b1eed.tar
uni-projects-d8eb50a7960edd35c74885d0ba7897f35c1b1eed.tar.gz
uni-projects-d8eb50a7960edd35c74885d0ba7897f35c1b1eed.zip
Parent07dfcf732fa7d88c196ad158ffa0326f757156b9 (diff)
[IPL/T] Values now have a return value which can be parsed easily
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
index 6d38aad..954c8da 100644
--- 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
@@ -5,4 +5,10 @@ std::string BuiltInFunction::Visit(LLVMVisitor& visitor) const {
return visitor.Visit(*this);
}
+Value::T_Primitive BuiltInFunction::RetType() const {
+ if (args.empty())
+ return T_void;
+ return args.front()->RetType();
+}
+
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
index 26fba3f..c4ea301 100644
--- 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
@@ -6,6 +6,7 @@
class BuiltInFunction : public Function {
public:
std::string Visit(LLVMVisitor& visitor) const override;
+ T_Primitive RetType() const override;
BuiltInFunction(std::string name, std::deque<Value*> 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
index 549d15e..34e3ea1 100644
--- 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
@@ -6,6 +6,7 @@
#include "../Value.h"
class Function : public Value {
+protected:
std::string name;
std::deque<Value*> args;