jetcrab\lexer/
error.rs

1use thiserror::Error;
2
3#[derive(Debug, Error, Clone, PartialEq)]
4pub enum LexerError {
5    #[error("Unexpected character: {0}")]
6    UnexpectedCharacter(char),
7
8    #[error("Invalid number: {0}")]
9    InvalidNumber(String),
10
11    #[error("Unterminated string")]
12    UnterminatedString,
13
14    #[error("Unterminated template string")]
15    UnterminatedTemplateString,
16
17    #[error("Unterminated comment")]
18    UnterminatedComment,
19
20    #[error("Invalid escape sequence: {0}")]
21    InvalidEscapeSequence(String),
22
23    #[error("Invalid Unicode escape: {0}")]
24    InvalidUnicodeEscape(String),
25
26    #[error("Invalid hex escape: {0}")]
27    InvalidHexEscape(String),
28
29    #[error("Invalid octal escape: {0}")]
30    InvalidOctalEscape(String),
31
32    #[error("Invalid binary literal: {0}")]
33    InvalidBinaryLiteral(String),
34
35    #[error("Invalid octal literal: {0}")]
36    InvalidOctalLiteral(String),
37
38    #[error("Invalid hex literal: {0}")]
39    InvalidHexLiteral(String),
40
41    #[error("Invalid BigInt literal: {0}")]
42    InvalidBigIntLiteral(String),
43
44    #[error("Invalid regex literal: {0}")]
45    InvalidRegexLiteral(String),
46
47    #[error("Invalid regex flags: {0}")]
48    InvalidRegexFlags(String),
49
50    #[error("Invalid identifier: {0}")]
51    InvalidIdentifier(String),
52
53    #[error("Invalid keyword: {0}")]
54    InvalidKeyword(String),
55
56    #[error("Invalid operator: {0}")]
57    InvalidOperator(String),
58
59    #[error("Invalid symbol: {0}")]
60    InvalidSymbol(String),
61
62    #[error("Invalid comment: {0}")]
63    InvalidComment(String),
64
65    #[error("Invalid whitespace: {0}")]
66    InvalidWhitespace(String),
67
68    #[error("Invalid token: {0}")]
69    InvalidToken(String),
70
71    #[error("End of input reached unexpectedly")]
72    UnexpectedEndOfInput,
73
74    #[error("Internal lexer error: {0}")]
75    InternalError(String),
76}