pub mod cache;
pub mod codegen;
pub mod context;
pub mod executor;
pub mod ir_generator;
pub mod main;
pub mod optimizer;
pub mod parallel;
pub mod semantic;
use std::sync::Arc;
use typescript_types::{TsError, TsValue};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum CompilationStage {
LexicalAnalysis,
SyntaxAnalysis,
SemanticAnalysis,
IRGeneration,
Optimization,
CodeGeneration,
Execution,
}
#[derive(Debug, Clone)]
pub enum CompilationResult<T>
where
T: Clone,
{
Success(T),
Error(TsError),
Skipped,
}
pub trait Compiler {
fn compile(&mut self, input: &str) -> CompilationResult<TsValue>;
fn reset(&mut self);
fn current_stage(&self) -> CompilationStage;
}
#[derive(Debug, Clone)]
pub struct CompilationUnit {
pub source_path: Option<String>,
pub source_content: String,
pub result: Option<CompilationResult<TsValue>>,
pub dependencies: Vec<String>,
}
impl CompilationUnit {
pub fn new(source_content: String) -> Self {
Self { source_path: None, source_content, result: None, dependencies: Vec::new() }
}
pub fn with_path(path: String, source_content: String) -> Self {
Self { source_path: Some(path), source_content, result: None, dependencies: Vec::new() }
}
}
#[derive(Debug, Clone)]
pub struct CompilationTask {
pub id: String,
pub unit: CompilationUnit,
pub priority: u32,
}
impl CompilationTask {
pub fn new(id: String, unit: CompilationUnit, priority: u32) -> Self {
Self { id, unit, priority }
}
}