/** * lisp-compiler: Compiles LISP using LLVM. * Copyright (C) 2022 Clyne Sullivan * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see . * * @file state.hpp * @brief Object to maintain compiler state during code compilation. */ #ifndef STATE_HPP #define STATE_HPP #include "ast.hpp" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" #include #include struct CompilerState { llvm::LLVMContext context; llvm::Module module; llvm::IRBuilder<> builder; std::map namedValues; int scope; CompilerState(): context(), module("main", context), builder(context), scope(0) {} }; #endif // STATE_HPP