makai_vcd_reader/
errors.rs

1use crate::lexer::position::*;
2use crate::tokenizer::token::*;
3
4#[derive(Debug)]
5pub enum TokenizerError {
6    UnexpectedTermination(LexerPosition),
7    IntegerParseError(std::num::ParseIntError, LexerPosition),
8    ScalarParseError(LexerPosition),
9    VectorParseError(LexerPosition),
10    RealParseError(std::num::ParseFloatError, LexerPosition),
11    IncorrectVariableWidth(usize, usize, LexerPosition),
12    IncorrectRealWidth(LexerPosition),
13    LexerError(LexerPosition),
14}
15
16impl From<LexerPosition> for TokenizerError {
17    fn from(pos: LexerPosition) -> Self {
18        TokenizerError::LexerError(pos)
19    }
20}
21
22impl From<TokenizerError> for TokenizerResult<Token> {
23    fn from(err: TokenizerError) -> Self {
24        Err(err)
25    }
26}
27
28pub type TokenizerResult<T> = Result<T, TokenizerError>;
29
30#[derive(Debug)]
31pub enum ParserError {
32    UnexpectedTermination,
33    Tokenizer(TokenizerError),
34    UnexpectedToken(Token),
35    UnexpectedUpscope(LexerPosition),
36    UnexpectedEndDefinitions(LexerPosition),
37    UnexpectedVariable(LexerPosition),
38    UnmatchedIdcode(LexerPosition),
39    MismatchedWidth(LexerPosition),
40    Custom(String, Option<Token>),
41}
42
43impl From<TokenizerError> for ParserError {
44    fn from(err: TokenizerError) -> Self {
45        ParserError::Tokenizer(err)
46    }
47}
48
49impl From<ParserError> for ParserResult<Token> {
50    fn from(err: ParserError) -> Self {
51        Err(err)
52    }
53}
54
55pub type ParserResult<T> = Result<T, ParserError>;