feat(ast): 添加完整的内置类型支持并重构类型定义

- 添加 va_list、bool、signed/unsigned 各种整数类型等内置类型
- 重新排列内置类型枚举顺序,增加 UNKNOWN 类型
- 为复合字面量、指针类型、数组类型添加初始化函数
- 添加结构体、联合体、枚举、typedef 类型的初始化函数
- 更新类型转储功能以支持新的内置类型显示

refactor(parser): 优化类型解析和声明处理逻辑

- 修改类型解析函数返回类型为通用 AST 节点
- 重构声明解析逻辑,支持变量和函数声明的不同处理路径
- 更新语法分析规则中的空格标记处理
- 简化表达式解析中的错误处理流程

fix(ast): 修复参数声明和类型转储相关问题

- 修正参数声明初始化函数中对 name 参数可为空的处理
- 修复类型转储中修饰符显示和指针类型显示问题
- 更新 AST 转储中空值检查使用正确的 null 比较
This commit is contained in:
zzy
2026-03-11 16:51:52 +08:00
parent 742bede02f
commit ce5414f2eb
14 changed files with 1717 additions and 1136 deletions

View File

@@ -95,20 +95,34 @@ typedef struct {
* @brief 内置类型枚举
*/
typedef enum {
SCC_AST_BUILTIN_TYPE_UNKNOWN,
SCC_AST_BUILTIN_TYPE_VA_LIST,
SCC_AST_BUILTIN_TYPE_VOID,
SCC_AST_BUILTIN_TYPE_BOOL,
SCC_AST_BUILTIN_TYPE_CHAR,
SCC_AST_BUILTIN_TYPE_SHORT,
SCC_AST_BUILTIN_TYPE_INT,
SCC_AST_BUILTIN_TYPE_LONG,
SCC_AST_BUILTIN_TYPE_LONG_LONG,
SCC_AST_BUILTIN_TYPE_UNSIGNED_CHAR,
SCC_AST_BUILTIN_TYPE_UNSIGNED_SHORT,
SCC_AST_BUILTIN_TYPE_UNSIGNED_INT,
SCC_AST_BUILTIN_TYPE_UNSIGNED_LONG,
SCC_AST_BUILTIN_TYPE_UNSIGNED_LONG_LONG,
SCC_AST_BUILTIN_TYPE_SIGNED_CHAR,
SCC_AST_BUILTIN_TYPE_SIGNED_SHORT,
SCC_AST_BUILTIN_TYPE_SIGNED_INT,
SCC_AST_BUILTIN_TYPE_SIGNED_LONG,
SCC_AST_BUILTIN_TYPE_SIGNED_LONG_LONG,
SCC_AST_BUILTIN_TYPE_FLOAT,
SCC_AST_BUILTIN_TYPE_DOUBLE,
SCC_AST_BUILTIN_TYPE_LONG_DOUBLE,
SCC_AST_BUILTIN_TYPE_BOOL,
SCC_AST_BUILTIN_TYPE_COMPLEX_FLOAT,
SCC_AST_BUILTIN_TYPE_COMPLEX_DOUBLE,
SCC_AST_BUILTIN_TYPE_COMPLEX_LONG_DOUBLE,
SCC_AST_BUILTIN_TYPE_VA_LIST,
} scc_ast_builtin_type_t;
/**
@@ -284,7 +298,7 @@ struct scc_ast_expr {
const char *name;
usize _target_idx;
} member;
// 类型转换
// cast 类型转换
struct {
scc_ast_type_t *type;
scc_ast_expr_t *expr;