mini_builder_rs/evaluator/
evaluator_builder_error.rs1use crate::{
2 parser::{node::NodeContent, parser_error::ParserError},
3 tokenizer::tokenizer_error::TokenizerError,
4};
5
6#[derive(Debug)]
9pub enum EvaluatorBuilderError {
10 ExpectedOneOf(usize, Vec<String>),
11 TokenizerError(TokenizerError),
12 ParserError(ParserError),
13 UnexpectedNodeContent(String),
14}
15
16impl std::fmt::Display for EvaluatorBuilderError {
17 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
18 match self {
19 Self::ExpectedOneOf(location, nodes) => write!(
20 f,
21 "unexpected node at {location}, expected one of: {:?}",
22 nodes
23 ),
24 Self::TokenizerError(tokenizer_error) => std::fmt::Display::fmt(&tokenizer_error, f),
25 Self::ParserError(parser_error) => std::fmt::Display::fmt(&parser_error, f),
26 Self::UnexpectedNodeContent(s) => {
27 write!(f, "unexpected node content {:?}", s)
28 }
29 }
30 }
31}
32
33impl std::error::Error for EvaluatorBuilderError {
34 fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
35 match self {
36 Self::TokenizerError(tokenizer_error) => Some(tokenizer_error),
37 Self::ParserError(parser_error) => Some(parser_error),
38 _ => None,
39 }
40 }
41}
42
43impl From<TokenizerError> for EvaluatorBuilderError {
44 fn from(tokenizer_error: TokenizerError) -> Self {
45 Self::TokenizerError(tokenizer_error)
46 }
47}
48
49impl From<ParserError> for EvaluatorBuilderError {
50 fn from(parser_error: ParserError) -> Self {
51 Self::ParserError(parser_error)
52 }
53}