This commit is contained in:
Markus Hauschild
2013-06-01 16:41:18 +02:00
parent 6d2e40778c
commit d5853c13b7
3 changed files with 22 additions and 1 deletions

View File

@@ -1,10 +1,12 @@
#ifndef TYPE_H
#define TYPE_H
#include "llvm/Type.h"
#include <string>
enum class Type { BOOL, INT, STRING, VOID };
std::string typeToString(Type type);
llvm::Type* typeToLLVMType(Type type);
#endif // TYPE_H

View File

@@ -88,6 +88,7 @@ void CodeGenVisitor::visit(FunctionCallExpression* e) {
}
void CodeGenVisitor::visit(FunctionDefinition* e) {
//std::vector<llvm::Type*> types;
}
void CodeGenVisitor::visit(IfStatement* e) {

View File

@@ -1,4 +1,6 @@
#include "AST/Type.h"
#include "llvm/DerivedTypes.h"
#include "llvm/LLVMContext.h"
std::string typeToString(Type type) {
switch (type) {
@@ -12,5 +14,21 @@ std::string typeToString(Type type) {
return "void";
default:
return "ERROR";
}
}
}
llvm::Type* typeToLLVMType(Type type) {
switch (type) {
case Type::BOOL:
return llvm::Type::getInt1Ty(llvm::getGlobalContext());
case Type::INT:
return llvm::Type::getInt32Ty(llvm::getGlobalContext());
case Type::STRING:
return llvm::Type::getInt8PtrTy(llvm::getGlobalContext());
case Type::VOID:
return llvm::Type::getVoidTy(llvm::getGlobalContext());
default:
// TODO error
return llvm::Type::getVoidTy(llvm::getGlobalContext());
}
}