#include "llvm/ADT/STLExtras.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" #include "llvm/IR/Verifier.h" #include #include #include #include #include #include "Ast.h" #include "Lexer.h" #include "Parser.h" using namespace llvm; using namespace ast; using namespace lexer; using namespace parser; namespace helper { // Cloning make_unique here until it's standard in C++14. // Using a namespace to avoid conflicting with MSVC's std::make_unique (which // ADL can sometimes find in unqualified calls). template static typename std::enable_if::value, std::unique_ptr>::type make_unique(Args &&... args) { return std::unique_ptr(new T(std::forward(args)...)); } } //===----------------------------------------------------------------------===// // Main driver code. //===----------------------------------------------------------------------===// int main() { // Prime the first token. fprintf(stderr, "ready> "); getNextToken(); // Run the main "interpreter loop" now. MainLoop(); AstObjects::TheModule->dump(); return 0; }