From 8f98dc579af1993ec85bd849656c4835b4039dd6 Mon Sep 17 00:00:00 2001 From: Stefan Weigl-Bosker Date: Mon, 23 Feb 2026 22:18:22 -0500 Subject: [willow]: frontend plumbing (#13) ... --- willow/tools/willowc/include/compiler.hpp | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 willow/tools/willowc/include/compiler.hpp (limited to 'willow/tools/willowc/include/compiler.hpp') diff --git a/willow/tools/willowc/include/compiler.hpp b/willow/tools/willowc/include/compiler.hpp new file mode 100644 index 0000000..96ca480 --- /dev/null +++ b/willow/tools/willowc/include/compiler.hpp @@ -0,0 +1,40 @@ +#ifndef WILLOWC_INCLUDE_COMPILER_HPP +#define WILLOWC_INCLUDE_COMPILER_HPP + +#include + +#include +#include + +namespace willowc { + +class Compiler { +public: + struct Options { + std::string filename; + bool use_stdin; + willow::Severity log_level; + }; + Compiler(); + Compiler(const Compiler &) = delete; + Compiler &operator=(const Compiler &) = delete; + + willow::LogicalResult addSourceFile(const std::string &path); + willow::LogicalResult addStdIn(); + // TODO + void run(); + void compile(FileID file); + + void setLogLevel(willow::Severity sev) { log_level_ = sev; } + size_t numFiles() { return sourcemanager_.numFiles(); } +private: + SourceManager sourcemanager_; + willow::Severity log_level_; + willow::DiagnosticEngine diagnostic_engine_; + + void emitDiagnostic(const willow::Diagnostic &d); +}; + +}; // namespace willowc + +#endif // WILLOWC_INCLUDE_COMPILER_HPP -- cgit v1.2.3