use std::io;
use std::fmt;
#[derive(Debug)]
pub enum SicompilerError {
Io(io::Error),
TokenizationError(String),
ValidationError(String)
}
impl fmt::Display for SicompilerError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
SicompilerError::Io(err) => write!(f, "I/O error: {}", err),
SicompilerError::TokenizationError(msg) => write!(f, "Tokenization error: {}", msg),
SicompilerError::ValidationError(msg) => write!(f, "Validation error: {}", msg)
}
}
}
impl std::error::Error for SicompilerError {}
impl From<io::Error> for SicompilerError {
fn from(value: io::Error) -> Self {
SicompilerError::Io(value)
}
}