makai_vcd_reader/
errors.rs1use 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>;