1pub type ParseResult<T> = Result<T, ParseError>;
2
3#[derive(Debug, Clone, PartialEq, thiserror::Error)]
4pub enum ParseError {
5 #[error("Unexpected end of input")]
6 UnexpectedEof,
7
8 #[error("Unexpected token '{found}' at position {position}. Expected {expected}")]
9 UnexpectedToken {
10 expected: String,
11 found: String,
12 position: usize,
13 },
14
15 #[error("Invalid syntax: {message} at position {position}")]
16 InvalidSyntax { message: String, position: usize },
17
18 #[error("Invalid number format: {value} at position {position}")]
19 InvalidNumber { value: String, position: usize },
20
21 #[error("Invalid identifier '{value}' at position {position}")]
22 InvalidIdentifier { value: String, position: usize },
23
24 #[error("Unterminated string literal at position {position}")]
25 UnterminatedString { position: usize },
26
27 #[error("Invalid entity type '{value}' at position {position}")]
28 InvalidEntityType { value: String, position: usize },
29
30 #[error("Invalid priority '{value}' at position {position}")]
31 InvalidPriority { value: String, position: usize },
32
33 #[error("Missing clause '{clause}' at position {position}")]
34 MissingClause { clause: String, position: usize },
35
36 #[error("Invalid issue ID '{value}' at position {position}")]
37 InvalidIssueId { value: String, position: usize },
38
39 #[error("General Error: {0}")]
40 General(String),
41}