logic_parser/
errors.rs

1use thiserror::Error;
2use crate::lexing::token::Span;
3
4#[derive(Error, Debug)]
5pub enum ParserError {
6    #[error("Unexpected token: {0}")]
7    UnexpectedToken(String, Span),
8    #[error("Unexpected EOF: {0}")]
9    UnexpectedEOF(String, Span),
10    #[error("Lexing error: {0}")]
11    LexingError(LexerError)
12    // #[error("Ambiguous Expression: {0}")]
13    // AmbiguousExpression(String, Span)
14}
15
16#[derive(Error, Debug)]
17pub enum LexerError {
18    #[error("Syntax error: {0}")]
19    SyntaxError(String, Span),
20    #[error("Unknown Token: {0}")]
21    UnknownToken(char, Span)
22}
23
24impl From<LexerError> for ParserError {
25    fn from(error: LexerError) -> Self {
26        ParserError::LexingError(error)
27    }
28}