- 在README.md中添加asm汇编器模块说明 - 更新ast_def.h中的枚举注释,添加sema相关信息以明确语义分析作用域 - 重命名函数参数param_types为params,使命名更清晰 - 移除call表达式中的_target字段,简化结构 - 为member、identifier等字段添加///< fill by sema注释说明填充时机 - 为jump语句添加_target字段用于语义分析 - 更新所有AST初始化函数,接受位置信息参数以改进错误定位 - 修复alignof表达式的类型应为ALIGN_OF而非SIZE_OF的问题 - 重构ast2ir.h,引入scc_ast2ir_ctx_t上下文结构体统一管理转换状态 - 添加符号表、节点到IR映射等必要的转换上下文信息
27 lines
926 B
C
27 lines
926 B
C
#ifndef __SCC_AST2IR_H__
|
|
#define __SCC_AST2IR_H__
|
|
|
|
#include "scc_type_abi.h"
|
|
#include <scc_ast.h>
|
|
#include <scc_ir.h>
|
|
|
|
typedef struct {
|
|
scc_ir_builder_t builder;
|
|
scc_hashtable_t node2ir; ///< decl to ir_ref
|
|
scc_hashtable_t symtab; ///< symbol to ir_ref
|
|
scc_strpool_t strpool; ///< string pool
|
|
const scc_type_abi_t *abi;
|
|
} scc_ast2ir_ctx_t;
|
|
|
|
void scc_ast2ir_ctx_init(scc_ast2ir_ctx_t *ctx, const scc_type_abi_t *abi);
|
|
|
|
void scc_ast2ir_translation_unit(scc_ast2ir_ctx_t *ctx,
|
|
scc_ast_translation_unit_t *tu);
|
|
void scc_ast2ir_decl(scc_ast2ir_ctx_t *ctx, scc_ast_decl_t *decl);
|
|
scc_ir_node_ref_t scc_ast2ir_expr(scc_ast2ir_ctx_t *ctx, scc_ast_expr_t *expr);
|
|
void scc_ast2ir_stmt(scc_ast2ir_ctx_t *ctx, scc_ast_stmt_t *stmt);
|
|
scc_ir_type_ref_t scc_ast2ir_type(scc_ast2ir_ctx_t *ctx,
|
|
scc_ast_type_t *ast_type);
|
|
|
|
#endif /* __SCC_AST2IR_H__ */
|