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 }
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}