LoadExpression + more CodeGen

This commit is contained in:
Markus Hauschild
2013-06-01 15:48:28 +02:00
parent c4e0c2f298
commit 96731379b4
9 changed files with 102 additions and 0 deletions

View File

@@ -17,6 +17,7 @@
#include "StatementList.h"
#include "ValueList.h"
#include "VariableDefinition.h"
#include "LoadExpression.h"
class ASTVisitor {
@@ -40,6 +41,7 @@ public:
virtual void visit(StatementList* e) = 0;
virtual void visit(ValueList* e) = 0;
virtual void visit(VariableDefinition* e) = 0;
virtual void visit(LoadExpression* e) = 0;
};
#endif // ASTVISITOR_H

View File

@@ -29,11 +29,15 @@ public:
virtual void visit(StatementList* e);
virtual void visit(ValueList* e);
virtual void visit(VariableDefinition* e);
virtual void visit(LoadExpression* e);
void createAnonymousFunction();
private:
llvm::IRBuilder<>* builder_;
llvm::FunctionPassManager* fpm_;
llvm::Module* module_;
std::map<std::string, llvm::Value*> namedValues_;
llvm::Value* value_;
};
#endif // CODEGENVISITOR_H

19
inc/AST/LoadExpression.h Normal file
View File

@@ -0,0 +1,19 @@
#ifndef LOADEXPRESSION_H
#define LOADEXPRESSION_H
#include <string>
#include "AST/Expression.h"
class LoadExpression : public Expression {
public:
LoadExpression(std::string id);
virtual ~LoadExpression();
virtual void accept(ASTVisitor *visitor);
std::string getId();
private:
std::string id_;
};
#endif // LOADEXPRESSION_H

View File

@@ -25,6 +25,7 @@ public:
virtual void visit(StatementList* e);
virtual void visit(ValueList* e);
virtual void visit(VariableDefinition* e);
virtual void visit(LoadExpression* e);
private:
int level_;
void indent();