mf_expression/lexer/
error.rs

1use thiserror::Error;
2
3/// 词法分析错误类型
4/// 定义了在词法分析过程中可能遇到的各种错误情况
5#[derive(Debug, PartialEq, Eq, Clone, Error)]
6pub enum LexerError {
7    /// 意外的符号错误
8    /// 当遇到无法识别的字符时触发
9    #[error("Unexpected symbol: {symbol} at ({}, {})", span.0, span.1)]
10    UnexpectedSymbol { symbol: String, span: (u32, u32) },
11
12    /// 不匹配的符号错误
13    /// 当遇到语法不正确的字符时触发(如单独的括号等)
14    #[error("Unmatched symbol: {symbol} at {position}")]
15    UnmatchedSymbol { symbol: char, position: u32 },
16
17    /// 意外的文件结束错误
18    /// 当在需要更多字符时文件已结束时触发(如未关闭的字符串等)
19    #[error("Unexpected EOF: {symbol} at {position}")]
20    UnexpectedEof { symbol: char, position: u32 },
21}
22
23/// 词法分析结果类型别名
24/// 简化错误处理的类型声明
25pub(crate) type LexerResult<T> = Result<T, LexerError>;