oxur_comp/
lib.rs

1//! Oxur Compiler
2//!
3//! Handles the backend of the Oxur compilation pipeline:
4//! - Stage 3: Lower (Core Forms → Rust AST)
5//! - Stage 4: Generate (Rust AST → Rust source)
6//! - Stage 5: Compile (Rust source → Binary via rustc)
7
8pub mod codegen;
9pub mod compiler;
10pub mod error_translator;
11pub mod lowering;
12pub mod rustc_diagnostic;
13
14pub use codegen::CodeGenerator;
15pub use compiler::Compiler;
16pub use error_translator::ErrorTranslator;
17pub use lowering::Lowerer;
18pub use rustc_diagnostic::{RustcDiagnostic, RustcSpan};
19
20// Re-export oxur-smap types for convenience
21pub use oxur_smap::{new_node_id, NodeId, SourceMap, SourcePos};
22
23/// Result type for compilation operations
24pub type Result<T> = std::result::Result<T, Error>;
25
26/// Error types for compilation
27#[derive(Debug, thiserror::Error)]
28pub enum Error {
29    #[error("Lowering error: {0}")]
30    Lowering(String),
31
32    #[error("Code generation error: {0}")]
33    CodeGen(String),
34
35    #[error("Compilation error: {0}")]
36    Compile(String),
37
38    #[error("Language error: {0}")]
39    Language(#[from] oxur_lang::Error),
40
41    #[error("IO error: {0}")]
42    Io(#[from] std::io::Error),
43}