mf_expression/compiler/
error.rs

1use thiserror::Error;
2
3/// 编译器错误类型
4/// 定义了在编译AST到操作码过程中可能遇到的各种错误情况
5#[derive(Debug, PartialEq, Eq, Clone, Error)]
6pub enum CompilerError {
7    /// 未知一元操作符错误
8    /// 当遇到编译器不支持的一元操作符时触发
9    #[error("未知的一元操作符: {operator}")]
10    UnknownUnaryOperator { operator: String },
11
12    /// 未知二元操作符错误
13    /// 当遇到编译器不支持的二元操作符时触发
14    #[error("未知二元操作符: {operator}")]
15    UnknownBinaryOperator { operator: String },
16
17    /// 函数参数未找到错误
18    /// 当函数调用时指定索引的参数不存在时触发
19    #[error("函数参数未找到: {function} 索引 {index}")]
20    ArgumentNotFound { function: String, index: usize },
21
22    /// 意外错误节点错误
23    /// 当遇到包含错误信息的AST节点时触发
24    #[error("意外错误节点")]
25    UnexpectedErrorNode,
26
27    /// 未知函数错误
28    /// 当调用未定义的函数时触发
29    #[error("未知函数: {name}")]
30    UnknownFunction { name: String },
31
32    /// 无效函数调用错误
33    /// 当函数调用的参数数量或类型不正确时触发
34    #[error("无效函数调用: {name}: {message}")]
35    InvalidFunctionCall { name: String, message: String },
36
37    /// 无效方法调用错误
38    /// 当方法调用的参数数量或类型不正确时触发
39    #[error("无效方法调用: {name}: {message}")]
40    InvalidMethodCall { name: String, message: String },
41}
42
43/// 编译器结果类型别名
44/// 简化编译过程中的错误处理
45pub(crate) type CompilerResult<T> = Result<T, CompilerError>;