12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // Standard includes
- #include <cstdio>
- //LLVM includes
- #include "llvm/Support/TargetSelect.h"
- #include "KaleidoscopeJIT.h"
- // Local includes
- #include "Ast.h"
- #include "Parser.h"
- #include "JIT.h"
- using namespace parser;
- using namespace jit;
- 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 <class T, class... Args>
- static
- typename std::enable_if<!std::is_array<T>::value, std::unique_ptr<T>>::type
- make_unique(Args &&... args) {
- return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
- }
- }
- //===----------------------------------------------------------------------===//
- // "Library" functions that can be "extern'd" from user code.
- //===----------------------------------------------------------------------===//
- //===----------------------------------------------------------------------===//
- // Main driver code.
- //===----------------------------------------------------------------------===//
- int main() {
- InitializeNativeTarget();
- InitializeNativeTargetAsmPrinter();
- InitializeNativeTargetAsmParser();
- JITObjects::TheJIT = llvm::make_unique<llvm::orc::KaleidoscopeJIT>();
- jit::InitializeModuleAndPassManager();
- // Prime the first token.
- fprintf(stderr, "ready> ");
- getNextToken();
- // Run the main "interpreter loop" now.
- MainLoop();
- AstObjects::TheModule->dump();
- return 0;
- }
|