35 lines
692 B
C++
35 lines
692 B
C++
#ifndef wg_COMPILER_HPP
|
|
#define wg_COMPILER_HPP
|
|
|
|
#include <llvm/IR/LLVMContext.h>
|
|
#include <llvm/IR/IRBuilder.h>
|
|
#include <llvm/IR/Module.h>
|
|
|
|
#include "commons.hpp"
|
|
#include "Node.hpp"
|
|
|
|
namespace wg
|
|
{
|
|
class Compiler
|
|
{
|
|
public:
|
|
explicit Compiler();
|
|
virtual ~Compiler();
|
|
|
|
void gen();
|
|
|
|
llvm::Value* compile(std::shared_ptr<Node> node);
|
|
private:
|
|
std::unique_ptr<llvm::LLVMContext> m_context =
|
|
std::make_unique<llvm::LLVMContext>();
|
|
|
|
std::unique_ptr<llvm::IRBuilder<>> m_builder =
|
|
std::make_unique<llvm::IRBuilder<>>(*m_context);
|
|
|
|
std::unique_ptr<llvm::Module> m_module =
|
|
std::make_unique<llvm::Module>("my module", *m_context);
|
|
};
|
|
}
|
|
|
|
#endif
|